欢迎来到天天文库
浏览记录
ID:20969879
大小:3.72 MB
页数:80页
时间:2018-10-18
《基于fpga的数字系统设计_6b》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、16.8状态编码状态分配、状态编码:将一个码值分配给机器各个状态的任务。状态编码决定了用以保持状态所需的触发器的数量,并且影响着实现状态机下一状态和输出逻辑的复杂度。一个有N种状态的状态机将至少需要log2N个触发器来存储状态编码。2手动分配状态编码的原则:1、如果对于某个给定的输入,两个状态会跳转到相同的下一状态,则给它们分配相邻的码值。2、对相邻的状态分配相邻的码值。3、对于某个给定的输入具有相同输出的状态,分配相邻的码值。以上原则可简化实现输出和下一状态功能的组合逻辑电路。3常见状态分配编码#
2、BinaryOne-HotGrayJohnson012345678910111213141500000001001000110100010101100111100010011010101111001101111011110000000000000001000000000000001000000000000001000000000000001000000000000001000000000000001000000000000001000000000000001000000000000001000000
3、000000001000000000000001000000000000001000000000000001000000000000001000000000000001000000000000001000000000000000000000010011001001100111010101001100110111111110101010111001100000000000000000010000001100000111000011110001111100111111011111111111111111
4、1111101111110011111000111100001110000011000000100000004Binary码:使用最少数量的触发器,译码逻辑较复杂。Gray码:与Binary位数相同,其特点是两个相邻的码值仅变化一位,使用时可减少电路中的电噪声。Johnson码:特点同Gray码。但使用位数较多。Gray码和Johnson码的优点是不会产生中间过渡状态。5One-Hot(独热)码、One-Cold(独冷)码:每个状态只有一个触发器有效;下一状态及输出译码逻辑简单;one-hot机有更
5、快的速度;状态的增减修改方便;用较少的位完成状态转移,比二进制编码更可靠。66.9隐式状态机、寄存器及计数器的综合状态机分为:显式状态机(FSM)、隐式状态机76.9.1隐式状态机隐式状态机:不能用明确的寄存器变量(reg)来表示状态机的状态值,而是由周期性(always…)行为中动作的进程来隐性定义其状态。任何一个在每个时钟周期中具有相同动作流的时序机都是一个单周期隐式状态机,可用一个状态来描述其动作。8always@(posedgeclk)beginreg_a<=reg_b;//第一个周期执行r
6、eg_c<=reg_d;@(posedgeclk)beginreg_g<=reg_f;//第二个周期执行reg_m<=reg_r;endend隐式状态机可以内嵌多个时钟同步的事件控制表达式,多个事件控制表达式将行为动作分派到机器的不同时钟周期。96.9.2计数器综合例6.294位行波计数器10116.9.3寄存器综合例6.31触发器输出综合moduleshift_1(outputregsig_d,new_signal,inputdata_in,clock,reset);regsig_a,sig_b,
7、sig_c;always@(posedgereset,posedgeclock)beginif(reset==1’b1)beginsig_a<=0;sig_b<=0;sig_c<=0;sig_d<=0;new_signal<=0;end12elsebeginsig_a<=data_in;sig_b<=sig_a;sig_c<=sig_b;sig_d<=sig_c;new_signal<=(~sig_a)&sig_b;endendendmodule13综合电路14例6.32组合输出综合modulesh
8、ift_1(outputregsig_d,outputnew_signal,inputdata_in,clock,reset);regsig_a,sig_b,sig_c;always@(posedgeresetorposedgeclock)beginif(reset==1’b1)beginsig_a<=0;sig_b<=0;sig_c<=0;sig_d<=0;end15elsebeginsig_a<=data_in;sig_b<=sig_a;sig_c<=sig_b;
此文档下载收益归作者所有