欢迎来到天天文库
浏览记录
ID:21972265
大小:334.00 KB
页数:15页
时间:2018-10-21
《verilog逻辑设计实例系列6》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、上次课回顾汽车自动收费站的设计流程1234行为级功能的抽象-得到状态表,列出状态表,根据状态表画出状态图,根据状态图写出DHL程序,并综合。本节课内容自动售饮料机的设计本节课重点1.通过本设计实例,进一步了解如何用状态机设计时序电路,同时掌握如何将状态图转换成VerilogHDL语言的方法。2.通过本设计实例,加深对if语句,以及case语句的理解。设计自动售饮料机涉及的基础知识自动饮料机是一个典型的利用状态机进行电路设计的例子。本例将采用有限状态机设计,使用case语句来描述各个状态之间的转换关系。
2、回顾case语句的使用当多路选择的控制条件集中在某个变量的变化上时,用case语句加以表达十分方便和直观。case语句最适用于描述有限状态机。case语句的用法如下case(敏感表达式)值1:快语句1;值2:快语句2;……值n:快语句n;default:块语句n+1;endcase当case语句中敏感表达式的值与值1相同时,执行块语句1;当敏感表达式的值与值2相同时,执行块语句2;依此类推,最后如果敏感表达式的值与上面列出的值1到n都不相同时,执行default后面的块语句n+1;下面用case语句设计一
3、个自动售饮料机假定每瓶饮料售价为2.5元,可使用两种硬币,即5角(half_dollar)、一元(one_dollar),机器有找零功能。下图是该自动售饮料机的示意图:币值显示取饮料找零投币孔1元5角自动售饮料机的信号定义clk:时钟输入;reset:为系统复位信号;half_dollar:代表投入5角硬币;one_dollar:代表投入1元硬币;half_out:代表找零信号;dispense:代表机器售出一瓶饮料;collect:用于提示投币者取走饮料。modulesell(one_dollar,ha
4、lf_dollar,collect,half_out,dispense,reset,clk);parameteridle=0,half=1,one=2,two=3,three=4;//idle,half,one,two,three为中间状态量,代表投入币值的几种情况inputone_dollar,half_dollar,reset,clk;outputcollect,half_out,dispense;regcollect,half_out,dispense;reg[2:0]D;自动售饮料机的程序(1)a
5、lways@(posedgeclk)beginif(reset)begindispense=0;collect=0;half_out=0;D=idle;end自动售饮料机的程序(2)case(D)idle:if(half_dollar)D=half;elseif(one_dollar)D=one;half:if(half_dollar)D=one;elseif(one_dollar)D=two;自动售饮料机的程序(3)自动售饮料机的程序(4)one:if(half_dollar)D=two;elseif(
6、one_dollar)D=three;two:if(half_dollar)D=three;elseif(one_dollar)begindispense=1;//售出饮料collect=1;D=idle;endthree:if(half_dollar)begindispense=1;//售出饮料collect=1;D=idle;endelseif(one_dollar)begindispense=1;//售出饮料collect=1;half_out=1;D=idle;endendcaseendendmo
7、dule作业1.根据上述程序,列出状态表,画出状态图;2.根据上述程序,画出综合可能得到的硬件图。
此文档下载收益归作者所有