1. 1、本文档共83页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5.3.3如何使用One-hot编码方案设计状态机 Next_state = IDLE; else Next_state = WAIT; default: Next_state = IDLE; endcase end //状态机的输出逻辑 assign output_1 = state[0]; assign output_2 = state[1]; endmodule One-hot编码特点:指定各个状态在状态编码中的表示位,采用参量定义方式指定One-hot状态编码;使用always语句描述状态寄存器的状态存储;使用敏感表和case语句描述状态转换逻辑,在case语句中只采用一位寄存器比较方式;使用assign语句描述状态编码控制的状态机输出。 5.4.1汽车尾灯控制电路设计 本节重点介绍构造状态图的两种方法:一是试探法,二是基于算法状态机构造状态图的方法。 例5.4.1 汽车尾灯发出的信号主要是给后面行驶汽车的司机看的,通常汽车驾驶室有刹车开关(HAZ)、左转弯开关(LEFT)和右转弯开关(RIGHT),司机通过操作这3个开关给出车辆的行驶状态。假设在汽车尾部左、右两侧各有3个指示灯,分别用LA、LB、LC、RA、RB、RC表示,如图5.4.1所示。这些灯的亮、灭规律如下: (1)汽车正常行驶时,尾部两侧的6个灯全部熄灭。 (2)刹车时,汽车尾灯工作在告警状态,所有6个灯按一定频率闪烁。 (3)左转弯时,左侧3个灯轮流顺序点亮, 4.4.1汽车尾灯控制电路设计 (4)右转弯时,右侧3个灯轮流顺序点亮, 假设电路的输入时钟信号为CP,CP的频率对于汽车尾灯所要求的闪烁频率。试根据上述要求设计出一个时钟同步的状态机来控制汽车的尾灯。 5.2.2 推荐的状态图描述方法 State = S0; //在nCR跳变为0时,异步清零 else case(State) S0: begin Out =1’b0; State = (Sin==1)? S0 : S1; end S1: begin Out = 1’b0; State = (Sin==1)? S2 : S1; end S2: begin Out = 1’b0; State = (Sin==1)? S0 : S3; end S3: if (Sin==1) begin Out =1’b1; State = S2; end else begin Out =1’b0; State = S1; end endcase end Endmodule 严格地说,对序列检测器电路用单个always块的描述方法所描述的逻辑存在着一个隐含的错误,即输出信号Out的描述 5.2.2 推荐的状态图描述方法 存在着一个隐含的错误,即输出信号Out的描述存在错误。因此,单个always块描述状态机的写法仅仅适用于穆尔型状态机。单个always块写法的电路结构框图可以用图4.2.2进行概括。 5.2.2 推荐的状态图描述方法 2. 两个always块描述状态机的方法(推荐写法) 用两个always块对该例的状态机进行描述,其代码如下: module Detector2 ( Sin, CP, nCR, Out) ; input Sin, CP, nCR; //定义输入变量 output Out ; //定义输出变量 reg Out; reg [ 1 : 0 ] Current_state, Next_state; parameter S0=2b00, S1=2b01, S2 = 2b10, S3 = 2b11; //状态转换,时序逻辑 always @(posedge CP or negedge nCR ) begin if (~nCR) Current_state = S0; //异步清零 else 5.2.2 推荐的状态图描述方法 Current_state = next_state; //在CP上升沿触发器状态翻转 end //下一状态产生和输出信号,组合逻辑 always @( Current_state or Sin) begin Next_state =2’bxx;

文档评论(0)

此项为空 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档