1. 首页
  2. 生活常识
  3. verilog语言

verilog语言

简介:关于verilog语言的相关疑问,相信很多朋友对此并不是非常清楚,为了帮助大家了解相关知识要点,小编为大家整理出如下讲解内容,希望下面的内容对大家有帮助!
如果有更好的建议或者想看更多关于生活常识技术大全及相关资讯,可以多多关注茶馆百科网。
如何用Verilog语言写一个银行排队叫号系统?

根据提问者的要求,使用Verilog语言编写一个银行排队叫号系统,排队机器有两个按键:VIP按键和非VIP按键,按下相应按键出一个排队号码,VIP和非VIP分别计数;柜台有三个按键(有3个柜台窗口),按下就会在LED上显示一个排队号,有VIP号先叫VIP。

▲提问者给出的框图根据题意,定义该叫号系统的模块框架,输入信号有V、N(排队机按键),KEY1、KEY2、KEY3(柜台按键),输出信号有LED1、LED2、LED3(LED显示信号)。

▲Verilog排队原理模块端口及变量定义如下图所示,其中输出LED1、LED2、LED3信号定义16位的数组,中间变量排队计数器cntV、cntN和叫号计数器cntVIP、cntnormad也是定义16位的数组,可存储计数号码为0~65535,若需更大的数可自行改变数组大小。

分析:1、初始化,计数器cntV、cntN、cntVIP、cntnormad的初始值为0,当系统重启时可重新计数;2、always@(N, V)语句用于排队机输出相应的排队号码;3、 always@(KEY1, KEY2,KEY3)语句用于柜台叫号输出显示,设计有相应的容错机制,当有两个以上的按键同时按下时,序号较前的按键有效,比如KEY1和KEY2同时按下,KEY1有效;KEY2和KEY3同时按下,KEY2有效;KEY1、KEY2和KEY3同时按下,KEY1有效。

4、Q为当前输出的排队号码。

参考程序:module queuing_system(input N,V,KEY1,KEY2,KEY3,output reg[15 : 0] LED1,LED2,LED3);reg [15 : 0] cntN,cntV,cntVIP,cntnormad;reg [15 : 0] Q; initialbegincntN = };cntV = };cntVIP = };cntnormad = };LED1 <= };LED2 <= };LED3 <= };Q <= };end always@(N, V)beginif(N==1&&V==0)cntN=cntN+1;if(V==1&&N==0)cntV=cntV+1; end always@(KEY1, KEY2,KEY3)beginif(KEY1==1||KEY2==1||KEY3==1)begin if(cntV>cntVIP)begincntVIP=cntVIP+1; Q=cntVIP;endelsebegincntnormad =cntnormad +1; Q=cntnormad;endend beginif(KEY1==1)LED1=Q;if(KEY2==1&&KEY1!=1)LED2=Q;if(KEY3==1&&KEY2!=1&&KEY1!=1)LED3=Q; end endendmodule以上是本人的回答,仅供参考,若有不足之处请指出。

希望本人的回答能够帮助提问者和头条的初学者们,若有不明白的地方可以评论区下方留言,答题不易,记得点赞哦,谢谢支持!

本文主要介绍了关于verilog语言的相关养殖或种植技术,生活常识栏目还介绍了该行业生产经营方式及经营管理,关注生活常识发展动向,注重系统性、科学性、实用性和先进性,内容全面新颖、重点突出、通俗易懂,全面给您讲解生活常识技术怎么管理的要点,是您生活常识致富的点金石。
以上文章来自互联网,不代表本人立场,如需删除,请注明该网址:http://seotea.com/article/1731826.html