Verilog课件12_第1页
Verilog课件12_第2页
Verilog课件12_第3页
Verilog课件12_第4页
Verilog课件12_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 Verilog有限状态机设计 主要内容n1 Verilog HDL有限状态机的一般形式n2 Moore型有限状态机设计n3 Mealy型有限状态机设计n4 System Verilog的枚举类型应用n5 状态机图形编辑设计方法n6 状态编码n7 非法状态处理n8 硬件数字技术排除毛刺1.Verilog HDL有限状态机的一般形式 1.1 为什么要使用状态机为什么要使用状态机n高效的顺序控制模型:高效的顺序控制模型:状态机克服了纯硬件数字系统顺序状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点。方式控制不灵活的缺点。n容易利用现成的容易利用现成的EDA优化工具优化工具。n性能稳定性能稳定:状

2、态机容易构成性能良好的同步时序逻辑模块。:状态机容易构成性能良好的同步时序逻辑模块。n设计实现效率高设计实现效率高:状态机的:状态机的HDL表述丰富多样、程序层次表述丰富多样、程序层次分明,易读易懂。分明,易读易懂。n高速性能:高速性能:在高速运算和控制方面,状态机更有其巨大的在高速运算和控制方面,状态机更有其巨大的优势。优势。n高可靠性。高可靠性。 1.2 有限状态机的结构有限状态机的结构n分类:分类:n从状态机的信号输出方式上从状态机的信号输出方式上:Mealy型与型与 Moore型。型。n米利机米利机的下一状态和输出取决于当前状态和当前输入;的下一状态和输出取决于当前状态和当前输入;n摩

3、尔机摩尔机的下一状态取决于当前状态和当前输入,但其输出的下一状态取决于当前状态和当前输入,但其输出仅取决于当前状态。仅取决于当前状态。n状态机的描述结构上:状态机的描述结构上:单过程状态机与多过程状态机。单过程状态机与多过程状态机。n从状态表达方式:从状态表达方式:符号化状态机和确定状态编码的状态机。符号化状态机和确定状态编码的状态机。n状态编码方式上分状态编码方式上分:顺序编码状态机、一位热码编码状态:顺序编码状态机、一位热码编码状态机或其它编码状态机机或其它编码状态机 状态机的结构状态机的结构包括包括4个部分:个部分:说明部分、主控时序过程、主说明部分、主控时序过程、主控组合过程、辅助过程

4、控组合过程、辅助过程n说明部分说明部分n状态转换变量的定义和所有可能状态的说状态转换变量的定义和所有可能状态的说明,必要时还要确定每一状态的编码形式。明,必要时还要确定每一状态的编码形式。说明:说明:用参数用参数parameter来定义各状态的,其中各状态的取值或编码必须来定义各状态的,其中各状态的取值或编码必须写上。写上。typedef是用户自定义语句关键词,是用户自定义语句关键词,enum是定义枚举类型关键词,是定义枚举类型关键词,type_user是标示符。是标示符。2. 主控时序过程(主控时序过程(REG进程)进程) 负责状态机运行和在时钟驱动下负责状负责状态机运行和在时钟驱动下负责状

5、态转换的过程。态转换的过程。主控组合进程(主控组合进程(COM进程)进程) 主控组合过程也可称为状态译码过程,其任务是根主控组合过程也可称为状态译码过程,其任务是根据据外部输入的控制信号外部输入的控制信号(包括来自状态机外部的信号(包括来自状态机外部的信号和来自状态机内部其它非主控的组合或时序过程的信和来自状态机内部其它非主控的组合或时序过程的信号)以及号)以及当前状态的状态值当前状态的状态值确定下一状态确定下一状态(next_state)的取向)的取向, 即即next_state的取值内容,的取值内容,以及确定以及确定对外输出对外输出或对或对内部其它内部其它组合时序过程组合时序过程输出控输出

6、控制信号的内容制信号的内容。4. 辅助进程辅助进程 配合状态机工作的组合过程或时配合状态机工作的组合过程或时序过程。序过程。时序过程时序过程只负责将当前状态转换为下一状态,不管将要转换的是哪一个状态。只负责将当前状态转换为下一状态,不管将要转换的是哪一个状态。nrst是低电平有效,是低电平有效,clk是上升沿有效。是上升沿有效。n观察输入信号观察输入信号0到到3的变化,此例是的变化,此例是Moore还是还是Mealy型?型?(2)关于参数定义表述)关于参数定义表述 n用用parameter进行参数定义虽然十分必要,进行参数定义虽然十分必要,一旦打来状态机萃取开关,状态定义可以一旦打来状态机萃取

7、开关,状态定义可以十分随意。定义什么值都可以。十分随意。定义什么值都可以。(3)状态变量定义表述)状态变量定义表述 Moore型有限状态机的设计nMealy状态机:状态机:输出是当前状态和所有输入输出是当前状态和所有输入信号的函数。不依赖时钟同步。信号的函数。不依赖时钟同步。nMoore状态机状态机:输出仅为当前状态的函数,:输出仅为当前状态的函数,所以在输入发生变化时还要等待时钟的到所以在输入发生变化时还要等待时钟的到来,所以比机要多等待一个时钟周期。来,所以比机要多等待一个时钟周期。项目一:项目一:ADC采样控制设计及多过采样控制设计及多过程结构型状态机程结构型状态机START:转换启动信

8、号,高电平有效。:转换启动信号,高电平有效。ALE:模拟信号输入选通端口地址锁存信号。上升沿有效。模拟信号输入选通端口地址锁存信号。上升沿有效。EOC:转换结束信号。高电平有效,表示转换结束。:转换结束信号。高电平有效,表示转换结束。是是0809发送给状态发送给状态机的信号。机的信号。OE:输出允许信号,高电平有效,表示转换结束可以把结果输出去了。输出允许信号,高电平有效,表示转换结束可以把结果输出去了。EOC:转换结束信号。高电平有效,表示转换结束。:转换结束信号。高电平有效,表示转换结束。是是0809发送给状态机的信号。发送给状态机的信号。过程:过程:复位信号后进入状态复位信号后进入状态s

9、0;第二个第二个clk上升沿后,状态机进入上升沿后,状态机进入s1,由由START、ALE发出启动采样和地址选发出启动采样和地址选通的控制信号,之后通的控制信号,之后EOC进入了低电平,进入了低电平,0809的的8位数据输出端出现高阻位数据输出端出现高阻态态”ZZ”,在状态在状态s2等待了数个等待了数个CLK后,后,EOC变为高电平,表示转换结束。变为高电平,表示转换结束。进入进入s3状态后,状态后,OE变为高电平,此时变为高电平,此时0809的数据输出端的数据输出端D已经输出转换好已经输出转换好的的5EH。在状态在状态s4,LOCK_T发出一个脉冲,其上升沿立即将发出一个脉冲,其上升沿立即将

10、D端数据端数据5E锁入锁入Q和和REGL中。中。把例把例8-2中的组合过程可以分成两个组合过程:中的组合过程可以分成两个组合过程:n一个负责状态译码和状态转换。一个负责状态译码和状态转换。n另一个负责对外控制信号的输出。分开写如下:另一个负责对外控制信号的输出。分开写如下:自动售货机自动售货机FSMNDResetClockOpen硬币传感器硬币传感器商品释放机制商品释放机制项目二项目二 简单自动售货机设计简单自动售货机设计n自动售货机在收到自动售货机在收到1515美分之后就会给出一件商品,这台机器美分之后就会给出一件商品,这台机器具有能够接收具有能够接收5 5美分和美分和1 1角硬币的单个投币

11、口,每次投入一枚角硬币的单个投币口,每次投入一枚硬币,其中机械传感器用来指示插入投币口是硬币,其中机械传感器用来指示插入投币口是5 5美分还是美分还是1 1角,角,控制器的输出导致一件商品交到顾客手中控制器的输出导致一件商品交到顾客手中n两个假设简化设计:两个假设简化设计:不找零不找零在每次使用前,机器都会复位在每次使用前,机器都会复位1 1、理解问题、理解问题假设:投入假设:投入5 5美分,在美分,在单个周期内单个周期内N N为真;投为真;投入入1 1角,在单个周期内角,在单个周期内D D为真;在上一次复位之为真;在上一次复位之后,若收到后,若收到1515美分或更美分或更多,则状态机多,则状

12、态机OpenOpen为真,为真,并保持一个周期并保持一个周期n例:简单的自动售货机例:简单的自动售货机n2 2、有限状态机抽象表达、有限状态机抽象表达列出最终能给出商品的输入顺序列出最终能给出商品的输入顺序: :n3 3个个5 5美分:美分:N N,N N,N Nn2 2个个5 5美分,再美分,再1 1角:角:N N,N N,D Dn1 1角,角,5 5分:分:D D,N Nn5 5分,分,1 1角:角:N N,D Dn2 2个个1 1角:角:D D,D D画状态图画状态图: :n输入输入: N, D, reset, clk: N, D, reset, clkn输出商品输出商品: open:

13、open假设假设: :n假设信号假设信号N N和和D D从来不会同时为真从来不会同时为真n省略了自环省略了自环 N=D=0 (no coin)N=D=0 (no coin)n只将只将openopen信号为真时列出信号为真时列出例:简单的自动售货机例:简单的自动售货机n3 3、状态最简化:、状态最简化:n状态状态S4S4S8S8具有等价,可合并成一个状态具有等价,可合并成一个状态n每个状态表示接受到钱的数量每个状态表示接受到钱的数量最简化的符号状态转换表最简化的符号状态转换表presentinputsnextoutputstateDNstateopen 000 0001 501010011 50

14、0 5001100101501110001000115010150111515100Reset50NNN + D100D15openD状态图状态图状态转换表状态转换表当前状态当前状态输入输入 次态次态 输出输出tQ1 Q0DND1 D0open 0000 000010101010011 0100 010011001011011 1000 100011101011011 11 111例:简单的自动售货机例:简单的自动售货机n4 4、进行状态分配、进行状态分配 4 4个状态,采用个状态,采用2 2位状态编码:位状态编码: 00(0000)、)、 55(0101)、)、 1010(1010)、)、

15、1515(1111)状态分配后的状态转换表状态分配后的状态转换表简单的自动售货机简单的自动售货机(verilog)module autosell (clk, reset, D, N,open); input clk, reset, D,N; output open; parameter cell0= 2b00,cell5 = 2b01, cell10= 2b10, cell15 = 2b11;reg 2:1 state;reg 2:1 next_state;always (posedge clk) if (reset) state = cell0; else state = next_stat

16、e;always (N or D or state) case (state) cell0: begin if (N) next_state = cell5;else if (D) next_state = cell10; else next_state = cell0; endcell5: begin if (N) next_state = cell10;else if (D) next_state = cell15; else next_state = cell10; endcell10: begin if (N) next_state = cell15;else if (D) next_

17、state = cell15; else next_state = cell10; endcell15:next_state = cell15; endcaseassign open=(state= cell15); endmodule项目三:较复杂自动售货机设计设计目标设计目标n(1)用四个发光二极管分别模拟售出价值为用四个发光二极管分别模拟售出价值为5角、角、1元、元、1.5元和元和2元的元的小商品,购买者可以通过开关选择任意一种标价中的小商品。小商品,购买者可以通过开关选择任意一种标价中的小商品。n(2)灯亮时表示该小商品售出。灯亮时表示该小商品售出。n(3)用开关分别模拟用开关分别模拟

18、5角、角、1元硬币和元硬币和5元纸币投入,可以用几只发光二元纸币投入,可以用几只发光二极管极管(或数码管或数码管)分别代表找回剩余的硬币。分别代表找回剩余的硬币。n(4)每次只能售出一种小商品,当所投硬币达到或超过购买者所选面每次只能售出一种小商品,当所投硬币达到或超过购买者所选面值时,售出货物并找回剩余的硬币,回到初始状态;值时,售出货物并找回剩余的硬币,回到初始状态;n(5)当所投硬币值不足面值时,可通过一个复位键退回所投硬币,回当所投硬币值不足面值时,可通过一个复位键退回所投硬币,回到初始状态。到初始状态。设计原理图由控制输入电路、由控制输入电路、FPGA、显示电路电路组成。、显示电路电

19、路组成。系统工作状态分析n判断开关被按下的个数判断开关被按下的个数N。若。若N=2表示所选本次表示所选本次选择无效,返回初始状态;选择无效,返回初始状态;n若若N=1则显示所选商品,并继续执行下面的流程。则显示所选商品,并继续执行下面的流程。四个开关分别代表四种商品。另外四个开关分别四个开关分别代表四种商品。另外四个开关分别代表投入代表投入0.5元,元,1元,元,2元,元,5元,统计投入总额。元,统计投入总额。n投入总额与商品价格做比较,如果总额投入总额与商品价格做比较,如果总额=商品价格,商品价格,则继续执行下面的程序。则继续执行下面的程序。n找零找零=总额总额-商品价格,数码管显示找零金额

20、。商品价格,数码管显示找零金额。 系统工作状态图具体工作状态要求n 初始状态初始状态 各变量都设置为零,按下各变量都设置为零,按下rst键后,一切恢复到初始状态。键后,一切恢复到初始状态。n选商品状态选商品状态 分别有价格为分别有价格为0.5元、元、1元、元、1.5元和元和2元的商品,每次选择商品前,设置元的商品,每次选择商品前,设置一个标志位一个标志位btn_sell表示选择商品状态。此自动售货机每一次售货时只能一表示选择商品状态。此自动售货机每一次售货时只能一次选择一种商品,当同时选择两种以上时,选择商品无效,数码管显示清零,次选择一种商品,当同时选择两种以上时,选择商品无效,数码管显示清

21、零,重新进行商品选择。选择商品后,数码管显示所选商品价格。重新进行商品选择。选择商品后,数码管显示所选商品价格。n投币状态投币状态 当选好商品后,开始投币。同样有一标志位当选好商品后,开始投币。同样有一标志位btn_price表示投币金额。表示投币金额。投币口只接受三种面值的钱币投币口只接受三种面值的钱币0.5元、元、2元和元和5元,可以同时投入多种面值钱币。元,可以同时投入多种面值钱币。投完币后,先有一个确认买商品的过程,若投了币但又不购买商品了,就将投完币后,先有一个确认买商品的过程,若投了币但又不购买商品了,就将全部投币金额退回;若确认购买商品,则进入下一状态全部投币金额退回;若确认购买

22、商品,则进入下一状态找零状态。找零状态。n 找零状态找零状态 投完币,并确认购买商品后,进入找零状态。首先要将所投的金额与所投完币,并确认购买商品后,进入找零状态。首先要将所投的金额与所选商品的价格做比较,若所投金额小于商品价格,则退回所投钱币;若大于选商品的价格做比较,若所投金额小于商品价格,则退回所投钱币;若大于等于商品价格,则两者做差,得到需要找零的钱。等于商品价格,则两者做差,得到需要找零的钱。Verilog 端口表述nmodule auto_seller(clk,rst,dis_mony,dis_price,btn_ok,btn_mon,btn_sell,led_warn,led,b

23、eep);ninput clk,rst,btn_ok;ninput 2:0 btn_mon;/选择放入的钱选择放入的钱ninput 3:0 btn_sell;/选择商品选择商品bbt_5,gz_10,kqs_15,kl_20noutput 3:0 led;/led_5,led_10,led_15,led_20noutput led_warn;/钱不足,指示灯钱不足,指示灯noutput 11:0 dis_mony;/数码管显示投入面值,数码管显示投入面值,dia_mony11:8=com位选位选,dis_mony7:0=段码段码noutput 11:0 dis_price;/数码管显示价钱数码

24、管显示价钱noutput beep;nreg clk_500Hz;nreg 3:0 led;/led_5,led_10,led_15,led_20nreg led_warn;/警告放入钱不足警告放入钱不足nreg 11:0 dis_mony;nreg 11:0 dis_price; nreg 31:0 counter;nreg 9:0 price,price_all;nreg 1:0 flag;/数码管显示标志位数码管显示标志位nreg beep;nparameter COUNT1 = 25d10000;Verilog 分频稳定数码管always (posedge clk)beginif(co

25、unter= 0)begin counter = COUNT1;clk_500Hz = clk_500Hz;endelsecounter = counter-1;end数码管显示商品价格/*分频后将时钟给数码管,数码管分别显示放入钱的多少、商品价格分频后将时钟给数码管,数码管分别显示放入钱的多少、商品价格*/ always (posedge clk_500Hz) begin case(flag) 2b00: begin dis_mony = 4b1110,led7(price_all%10),1b1; dis_price = 4b1110,led7(price%10),1b1; flag =

26、2b01; end 2b01: begin dis_mony = 4b1101,led7(price_all/10),1b0; dis_price = 4b1101,led7(price/10),1b0; flag = 2b00; end endcase end数码管显示函数nfunction 6:0 led7; ninput 3:0 dis_input;nbeginncase (dis_input)n0 : led7 = 7b111_1110;n1 : led7 = 7b011_0000;n2 : led7 = 7b110_1101;n3 : led7 = 7b111_1001;n4 : led7 = 7b011_0011;n5 : led7 = 7b101_1011;n6 : led7 = 7b101_1111;n7 : led7 = 7b111_0000;n8 : led7 = 7b111_1111;n9 : led7 = 7b111_0011;ndefault : led7 = 7b111_1111;nendcasenendnendfunctionnendmodule初始状态nalways (negedge rst or posedge clk)nbeginni

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论