排队叫号管理系统(如何用Verilog语言写一个银行排队叫号系

2022-09-22 14:46 阅读: 评论:
 

根据提问者的要求,使用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;

initial

begin

cntN = {16{1'b0}};

cntV = {16{1'b0}};

cntVIP = {16{1'b0}};

cntnormad = {16{1'b0}};

LED1 <= {16{1'b0}};

LED2 <= {16{1'b0}};

LED3 <= {16{1'b0}};

Q <= {16{1'b0}};

end

always @(N, V)

begin

if(N==1&&V==0)

cntN=cntN+1;

if(V==1&&N==0)

cntV=cntV+1;

end

always @(KEY1, KEY2,KEY3)

begin

if(KEY1==1||KEY2==1||KEY3==1)

begin

if(cntV>cntVIP)

begin

cntVIP=cntVIP+1;

Q=cntVIP;

end

else

begin

cntnormad =cntnormad +1;

Q=cntnormad;

end

end

begin

if(KEY1==1)

LED1=Q;

if(KEY2==1&&KEY1!=1)

LED2=Q;

if(KEY3==1&&KEY2!=1&&KEY1!=1)

LED3=Q;

end

end

endmodule

以上是本人的回答,仅供参考,若有不足之处请指出。希望本人的回答能够帮助提问者和头条的初学者们,若有不明白的地方可以评论区下方留言,答题不易,记得点赞哦,谢谢支持!

特别声明:

本文来源于网络,请核实广告和内容真实性,谨慎使用,本站和本人不承担由此产生的一切法律后果!

国产手机十大品牌(华为、oppo、vivo、小米这四个品牌的手机哪个 小天鹅洗衣机故障(洗衣机有哪些常见故障,小天鹅洗衣机故障维 windows7是什么意思(Windows 7及以上版本的64位系统是什么意思) dj打碟机(DJ打碟需要一台什么配置的电脑) 鲅鱼圈温泉(营口鲅鱼圈双台子镇温泉有哪些) 食管癌术后护理(食道癌手术后应该如何补充营养) 如何治疗酒糟鼻(酒渣鼻有什么有效的治疗方法吗) 高考300分能上什么学校(高考300分能上什么学校高考300多分有什么 螨虫的症状(皮肤感染螨虫有什么症状) 怎样才能让鼻梁变高(我的鼻子看起来侧面还可以,但是正面不好
热门文章
最近发表
友情链接