部分代码:

//synopsys translate_off
`timescale 10 ns/ 1 ps
//synopsys translate_on
module display(clk,            rst_n,duan,           wei,            start,choose,num_choose,display_score_ge,display_score_shi,start_en,start_falling_edge,time_over);input           clk;                                             // 系统时钟 100MHzinput             rst_n;                                              // 复位信号 低电平有效input           choose;                                                // 抢答完成信号input  [2:0]    num_choose;                                            // 抢答者号码input           start;                                              // 抢答开始按键input           start_en;  //开始使能信号input           start_falling_edge;//开始按键下降沿检测input [3:0]     display_score_ge;// 分数个位input [3:0]     display_score_shi;// 分数十位output [7:0]    duan;                                                // 数码管段选output [7:0]    wei;                                                // 数码管位选output  reg     time_over;//------------------------------------------------------------------//------------------------------------------------------------------reg  start_sign;                                                  // 开始抢答标志always@(negedge start or negedge rst_n)beginif(rst_n == 1'b0)start_sign <=   1'b0;elsestart_sign <=   1'b1;end//------------------------------------------------------------------reg [25:0] count;                                                      // 1HZ时钟计数器reg        clk_1hz;                                                  // 1HZ时钟信号always@(posedge clk or negedge rst_n)                            // 计数 用于分频beginif(rst_n == 1'b0)count <=   26'b0;elsebeginif(count == 26'd49999999)count <=   26'b0;elsecount <=   count + 1'b1;endendalways@(posedge clk or negedge rst_n)                          // 产生一个1Hz的时钟beginif(rst_n == 1'b0)clk_1hz <=   1'b0;elsebeginif(count == 26'd49999999)clk_1hz <=   1'b1;elseclk_1hz <=   1'b0;     endend//------------------------------------------------------------------//------------------------------------------------------------------reg [3:0] ge;                                                        // 数码管显示倒计时个位reg [1:0] shi;                                                     // 数码管显示倒计时十位reg [2:0] num;                                                     // 数码管显示抢答号always@(posedge clk or negedge rst_n)                           // 数码管个位显示beginif(rst_n == 1'b0)beginge <= 4'd0;time_over <= 1'd0;endelsebeginif(start_falling_edge == 1'b1)beginge <= 4'd0;time_over <= 1'b0;endelse if(clk_1hz == 1'b1)beginif((start_sign == 1'b1) && (choose == 1'b0))beginif(ge == 4'b1010)ge <= 4'b0000;else if((ge == 4'b0000)&&(shi != 2'b00))ge <= 4'b1001;else if((ge == 4'b0000)&&(shi == 2'b00))             // 30s倒计时完毕beginge <= 4'b0000;time_over <= 1'b1;endelsege <= ge - 1'b1;endelsege <= ge;endendendalways@(posedge clk or negedge rst_n)                           // 数码管十位显示beginif(rst_n == 1'b0)shi <=   2'b11;elsebeginif(start_falling_edge == 1'b1)beginshi <= 2'b11;endelse if(clk_1hz == 1'b1)beginif((start_sign == 1'b1) && (choose == 1'b0))beginif(ge == 4'b1010)shi <=   2'b11;else if(ge == 4'b0000)beginif(shi == 2'b00)                                 // 30s倒计时完毕shi <= 2'b00;elseshi <= shi - 1'b1;endelseshi <= shi;endelseshi <= shi;endendendalways@(posedge clk or negedge rst_n)                         // 数码管抢答号显示beginif(rst_n == 1'b0)num <=   3'b0;elsebeginif(start_falling_edge == 1'b1)num <=   3'b0;elseif(choose == 1'b1)num <=   num_choose;elsenum <=   num;      end end/***********************数码管显示原理***************************/// 功能:数码管显示原理// 说明://  功能描述:// 动态显示原理:// 由于LED静态显示需要占用较多的I/O口,且功耗较大,因此在大多数场合通常不采用静态显示,// 而采用动态扫描的方法来控制LED数码管的显示。动态显示的特点是将8位数码管的// 段选线并联在一起,由位选线控制是哪一位数码管有效。点亮数码管采用动态扫描显示。// 动态扫描显示原理:// 动态扫描显示即轮流向各位数码管送出字形码和相应的位选,只要扫描显示速度够快,// 利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。// 动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。// 动态扫描显示时刷新频率最好大于50HZ,即显示一轮的时间不超过20ms,本设计采用1000HZ的频率进行扫描显示,// 也就是数码管的刷新频率,每个数码管显示// 时间不能太长也不能太短,时间太长会影响刷新率,导致总体显示呈现闪烁的现象,时间// 太短发光二极管的电流导通时间也就短,会影响总体的显示亮度。一般控制在1ms左右最佳。// ***********************************************************/***********************位选时钟***************************/// 功能:产生1000Hz的位选时钟// 说明:// 对于分频系数为24999的分频器,本例的输入时钟系统50M时钟(clk_50M),// 输出为24999分频时钟(f_50)。设计方法为,通过设置一个10位的计数寄存器(cnt)// 来实现,每种系统时钟周期的上升沿计数一次,当计数寄存器数到999的时候,// 将输出分频信号取反即可得到24999分频的输出1000Hz的位选时钟。// ***********************************************************reg    [14:0]   count2;                                             // 1KHZ时钟计数器reg             clk_1k;                                             // 1KHZ时钟信号always@(posedge clk or negedge rst_n)                           // 计数 用于分频beginif(rst_n == 1'b0)count2 <=   15'b0;elsebeginif(count2 == 15'd24999)count2 <=   15'b0;elsecount2 <=   count2 + 1'b1;endendalways@(posedge clk or negedge rst_n)                            // 数码管扫描时钟 1KHzbeginif(rst_n == 1'b0)clk_1k <=   1'b0;elsebeginif(count2 == 15'd24999)clk_1k <=   1'b1;elseclk_1k <=   1'b0;    endend/***********************数码管位选信号产生***************************/// 功能:数码管位选信号产生// 说明:// 本设计采用共阳数码管,即位选低电平有效,需要使用2位数码管显示速度档位,// 所以需要位宽为2bit的位选信号,并且将位选信号设置为低电平;// ***********************************************************reg [2:0] clk_scan; always@(posedge clk_1k or negedge rst_n)beginif(rst_n == 1'b0)clk_scan <=   1'b0;else beginif(clk_scan == 3'd4)clk_scan <=   1'b0;elseclk_scan <=   clk_scan + 1'b1;endend//------------------------------------------------------------------//------------------------------------------------------------------reg [7:0] duan;reg [7:0] wei;

.
链接:https://pan.baidu.com/s/1sGmJE7ZeHCYwGkIet33zLQ
提取码:1234

基于FPGA的智力抢答器Verilog仿真设计相关推荐

  1. 基于FPGA的智力抢答器设计

    配套FPGA开发板(含该设计的工程代码):https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-4676525296.4.6e8950ed57YPh ...

  2. 基于 FPGA 的智力抢答器设计

    本文设计文档及源码将在公众号 果冻空间 免费公布,关注公众号回复A-001获取,博文展示过少,有需要公众号获取,目前公众号仅仅作为资源管理的平台,提供资料链接 基于 FPGA 的智力抢答器设计 题目简 ...

  3. html抢答器代码,基于FPGA的四路抢答器的Verilog HDL代码.doc

    基于FPGA的四路抢答器的Verilog HDL代码.doc module qiangda4(clk,clr,inputEn,add,stu,inputL1,inputL2,inputL3,input ...

  4. 基于FPGA的竞赛抢答器

    基于FPGA的竞赛抢答器,使用verilog语言设计实现. 实验要实现的基本功能是 主持人按下开始,三个人抢答,主持人可以给选手加分或者减分,分数用数码管来显示.以下是主要功能和指标: (1)设计一个 ...

  5. 基于 FPGA 的数字抢答器设计

    下面是基于 FPGA 的数字抢答器设计,在quartusII下,modelsim下仿真,编程语言VHDL.   1.抢答器的工作原理 主持人宣布可以抢答后,在 20s 的定时时间内若有人按键抢答,则这 ...

  6. 智力竞赛抢答器Verilog HDL设计

    设计任务 智力竞赛抢答器Verilog HDL要求有6位参赛者进行抢答,有六个抢答信号进行抢答.当有抢答选手按下抢答键后系统能够快速准确的判断是那一组选手按下了抢答信号,由于系统比较小,速度比较快一般 ...

  7. 基于FPGA的多路抢答器设计程序代码与测试代码

    (1) 主程序代码: module who_is_the_best(clk,rset,start,rusher1,rusher2,rusher3,rusher4,rusher5,rusher6,tim ...

  8. 选题二——智力抢答器的课程设计

    一,实验内容,要求及目的 二,实验代码 1,module alldesign(reset,clock,din1,din2,din3,din4,clear,beep,number,cnt); input ...

  9. 智力竞赛抢答器 Verilog HDL 建模

    设计题目: 智力竞赛抢答器 Verilog HDL 建模 设计要求: 1. 5 组参赛者进行抢答: 2. 当抢先者按下按钮时,抢答器能准确判断,并以声.光标志(模拟).要求声响.光亮时间为 3s 后自 ...

最新文章

  1. 魂力真的存在那么该如何提高魂力呢
  2. 字符编码笔记:ASCII,Unicode和UTF-8(转) + BASE64
  3. Spring Cloud Alibaba - 12 使用Nacos的元数据实现金丝雀发布功能
  4. 用正则表达式捕获标识符——随便说
  5. Redis 学习---(4)Redis 数据类型
  6. fedora arm linux gcc,fedora17中安装arm-linux-gcc交叉编译器.doc
  7. win7如何设置wifi热点_win7电脑本地连接连不上怎么办?详细教您如何设置本地连接...
  8. ASP.NET MVC的帮助类HtmlHelper和UrlHelper
  9. php社工库搭建,如何快速3分钟本地搭建社工裤子
  10. html在文本中加颜色,如何在HTML中更改文本颜色
  11. 卡巴斯基:2019年金融行业网络威胁趋势报告
  12. java.io.UTFDataFormatException: encoded string too long: 270976 bytes
  13. c语言json库如何编译,C语言的JSON库Jansson
  14. 断臂求生!捷信全线退出医美市场
  15. 在虚拟机端搭建lamp和通过docker技术在云服务器搭建lamp环境
  16. Word无格式粘贴 宏与周围格式相匹配粘贴 宏
  17. 最新Anaconda 创建Python3.6,Python3.7虚拟环境,为Pytorch,tensorflow创建单独环境
  18. 家谱整站源码php_关系树族谱echarts +php
  19. oracle sysaux扩大,oracle 10g SYSAUX表空间快速增长之WRH$_SQL_PLAN篇
  20. 红米k50至尊版和k50区别哪个好

热门文章

  1. 宅急送项目开发过程及问题?
  2. 数据结构第六章图的思维导图
  3. 开源:基于COF屏的雕刻机方案控制开源GRBL_ESP32
  4. 猎曲奇兵soundhound的原理
  5. 基于微信小程序云开发的职业学校招生报名小程序源码,职业学校招生报名微信小程序源码 ,职业学校招生报名小程序源码
  6. 安装HP WebInspect时,SQLServer2008安装不上咋办
  7. 数字人轻松学习Blender系列之八:建模-6
  8. 2017-秋招:机器学习/算法工程师(含大量面经)
  9. 交叉熵损失函数(softmax分类器)
  10. 【项目分享】还有谁不服??这款随机表情包生成器征服你!!