篮球记分牌verilog设计说明_第1页
篮球记分牌verilog设计说明_第2页
篮球记分牌verilog设计说明_第3页
篮球记分牌verilog设计说明_第4页
篮球记分牌verilog设计说明_第5页
已阅读5页,还剩3页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、数字逻辑设计及应用课程设计报告姓名:学号:选课号:79设计题号:23一设计题目篮球比赛数字计分牌二设计要求1分别记录两队得分情况;2进球得分加2 分,罚球进球得分加1 分;3纠正错判得分减2 分或 1 分;4分别用三个数码管显示器记录两队的得分情况。三设计过程( 一)设计方案1.模块设计题目中要用三个数码管来记录两队的得分情况,本文采用输出为8421bcd 码,外接译码器和数码管的方式来实现。先设计一个带有进位(co)和借位( ci )输出的模块pad,输出端( num)输出 4 位8421bcd 码外接译码器和数码管, pad 模块还带有加一输入端( a1),加二输入端( a2),减一输入端

2、( d1),减二输入端( d2)。输入端与开关相接,操作者按下开关即给该端口一个脉冲信号, 各输入端口由上升沿触发。 如果操作者同时按下多个端口, 输出端口将保持原来的信号不变。 pad 模块功能图见图 1-1。图 1-1pad 模块输入输出端口及功能然后将三个相同的pad 模块进行级联,构造为新的模块numberpad,从而得到带有三个数码管的篮球记分牌。甲乙两队都将分别使用这个记分牌。级联图见图1-2。图 1-2 pad 模块级联图2.模块部的算法流程每 个 模 块 有 四 个 输 入端 口a1,a2,d1,d2 来 进行 触 发 , 触 发 事 件 太 多 , 因 此 构造rem=a1|

3、a2|d1|d2 作为新的触发信号。因此, 只要 a1,a2,d1,d2 中任意一个按键被按下,将会发出一个脉冲, rem 也就会产生一个脉冲。但是可能出现多个按键同时按下的情况,这样会产生冲突。所以在always 语句块中,进行判断,看是否a1,a2,d1,d2 中只有一个处于高电平,若同时处于高电平,则输出维持原来的值不变。判断完端口a1,a2,d1,d2 中哪一个输入了以后,就要进行加1,加 2,减 1,减 2 的操作。加 1 分为以下情况: ( 1)若 num 已经计数到 9 即 1001,再加 1 则 num 应变为 0000 ,进位端 co 输出 1;( 2)若 num 不为 9,

4、则直接加 1,co 输出 0。加 2 分为以下情况: ( 1)若 num 已经计数到 8 即 1000,再加 2 则 num 应变为 0000 ,进位端 co 输出 1;( 2) num 已经计数到 9 即 1001。再加 2 则 num 应变为 0001 ,进位端 co 输出 1;( 3)若 num 不为 8 或 9,则直接加 2, co 输出 0/。减 1 分为以下情况: (1)若 num 此时为 0,再减 1 则 num 应变为 9 即 1001,借位端 ci 输出 1;( 2)若 num 不为 0,则直接减 1, ci 输出 0。减 2 分为以下情况: (1)若 num 此时为 0,再

5、减 2 则 num 应变为 8 即 1000,借位端 ci 输出 1;( 2)若 num 此时为 1,再减 2 则 num 应变为 9 即 1001,借位端 ci 输出 1;(3)若 num 不为 0 或 1,则直接减 2, ci 输出 0算法流程图见图1-3图 1-3算法流程图( 二) Verilog 程序(注:在 quatus2 中不能编写中文注释,这里的注释为后期编写)将 pad 级联成新的模块 numberpad,其中 num1,num2,num3 分别输出个十百位的8421bcd 码/module numberpad(a1,a2,d1,d2,num1,num2,num3);outpu

6、t 3:0 num1,num2,num3;input a1,a2,d1,d2; / a1 为加 1 端口, a2 为加 2 端口, d1 为减 1 端口, d2 为减 2端口wire co1,co2,co3,ci1,ci2,ci3;pad(a1,a2,d1,d2,num1,co1,ci1);/将三个 pad 级联/pad(co1,0,ci1,0,num2,co2,ci2);pad(co2,0,ci2,0,num3,co3,ci3);endmodule/pad 模块,输出为4 为 8421bcd 码,由 a1,a2,d1,d2 来实现加减1、 2,有进位和借位端口module pad(a1,a2

7、,d1,d2,num,co,ci);output reg 3:0 num;输出 4 位 8421bcd 码/output reg co,ci;/co进位信号 , ci is 借位信号input a1,a2,d1,d2;/a1 为加 1 端口, a2 为加 2 端口, d1 为减 1 端口, d2 为减 2 端口wire rem;initialnum=4b0000;assign rem=a1|a2|d1|d2;always (posedge rem)beginif(a1&!a2&!d1&!d2) /仅 a1 输入脉冲时加 1,必要时进位 beginif(num=4b1001)beginnum=4

8、b0000;co=1b1;endelsebeginnum=num+4b0001;co=1b0;endendelse if(a2&!a1&!d1&!d2) /仅 a2 输入脉冲时加2,必要时进位beginif(num=4b1000)beginnum=4b0000;co=1b1;endelse if(num=4b1001)beginnum=4b0001;co=1b1;endelsebeginnum=num+4b0010;co=1b0;endendelse if(d1&!a1&!a2&!d2) /仅 d1 输入脉冲时减1,必要时借位beginif(num=4b0000)beginnum=4b1001

9、;ci=1b1;endelsebeginnum=num-4b0001;ci=1b0;endendelse if(d2&!a1&!a2&!d1) /仅 d2 输入脉冲时减2,必要时借位beginif(num=4b0001)beginnum=4b1001;ci=1b1;endelse if(num=4b0000)beginnum=4b1000;ci=1b1;endelsebeginnum=num-4b0010;ci=1b0;endendelse/ 多个端口同时输入,输出保持原来的值beginnum=num;co=1b0;ci=1b0;endendendmodule(三)仿真结果1.验证加 1、加

10、2、减 1、减 2 端口正常,个位到十位进位正常当输入端分别输入加1、加 2、减 1、减 2 信号时,输出了相应的结果。18ns 时,执行加 1 操作,个位 num1 由 1001(即 9)变成了 0,同时向十位进位,十位num2 变成了 0001。31ns 时又有一进位,十位num2 变成了 0010(即 2)。(见图 3-1)图 3-1仿真图像一2.验证十位向百位进位正常由图 3-2 可得, 213ns 时已计数到199,即个位 num1 为 1001,十位 num2 为 1001,百位num3为 0001。此时输入了加2 的信号,输出变成了201,即个位num1 变为0001,十位num

11、2 变为 0000,百位 num3 变为 0010。由此验证了十位向百位进位正常。图 3-2仿真图像二3验证多个端口同时输入时,保持原值不变从 219ns 开始到 230 秒都有多个端口同时输入, 由图 3-3 可以观察到, 输出端口的值并未发生改变。图 3-3仿真图像三四、设计结论(一)设计结果分析由以上的仿真图像可知,各端口工作正常,通过给 a1、a2、d1、d2 端口输入脉冲,可以使输出分别进行加 1、加 2、减 1、减 2 的操作,且个位到十位、十位到百位进位正常,输出为 8421bcd 码。当多个端口同时输入时,输出将保持原值,避免了冲突。(二)设计中遇到的问题由于a1、 a2、d1、 d2 端口相互独立,刚开始设计时将它们都作为触发端口放在always后面,发现调试总是有冲突。后来引入了一个w

温馨提示

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

最新文档

评论

0/150

提交评论