栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > 百科 > 教育

verilog语言

教育 更新时间: 发布时间: 百科归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 = {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)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以上是本人的回答,仅供参考,若有不足之处请指出。

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/ask/610657.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号