• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

4人抢答器设计VHDL代码Quartus FPGA实验箱

08/25 08:20
300
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240Z91I402304.doc

共1个文件

名称:4人抢答器设计VHDL代码Quartus? FPGA实验箱

软件:Quartus

语言:VHDL

代码功能:

要求

(1)1个主持键、4个抢答键。

(2)抢答的键号用一个数码管显示(可以采用静态显示)。

(3)抢答的时间用两位数码管显示(可以采用静态显示),精确到0.15。

(4)主持键按下,4个抢答键才有效,时间从0.0s开始计时。

(5)当时间到8.8s还没人按抢答键,抢答停止,抢答键无效;当主持键再次按下才有效。

(6)在规定时间内抢答键按下时,显示先按下的键号,时间停止,抢答键无效:当主持键再次按下才有效? ?。

(7)必须先进行前仿真,并打印出仿真波形。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

本代码已在FPGA实验箱验证,FPGA实验箱如下,其他开发板可以修改管脚适配:

FPGA实验箱.jpg

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

状态图

5. 管脚分配

部分代码展示:

LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
???USE?ieee.std_logic_unsigned.all;
--显示模块
ENTITY?display?IS
???PORT?(
??????clk_1KHz???:?IN?STD_LOGIC;--时钟1KHz
??????first_num??:?IN?STD_LOGIC_VECTOR(3?DOWNTO?0);--抢答号码
??????time_ten???:?IN?STD_LOGIC_VECTOR(3?DOWNTO?0);--计时十位
??????time_one???:?IN?STD_LOGIC_VECTOR(3?DOWNTO?0);--计时个位
??????
??????SEL????????:?OUT?STD_LOGIC_VECTOR(2?DOWNTO?0);--数码管位选
??????SEG????????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--数码管段选
???);
END?display;
ARCHITECTURE?behave?OF?display?IS
???
???SIGNAL?cnt??:?STD_LOGIC_VECTOR(2?DOWNTO?0)?:=?"000";
???SIGNAL?data?:?STD_LOGIC_VECTOR(3?DOWNTO?0)?:=?"0000";
???
BEGIN
???PROCESS?(clk_1KHz)
???BEGIN
??????IF?(clk_1KHz'EVENT?AND?clk_1KHz?=?'1')?THEN
?????????cnt?<=?cnt?+?"001";--计时0~7
??????END?IF;
???END?PROCESS;
???
???SEL?<=?cnt;--位选
???
???PROCESS?(cnt,?first_num,?time_ten,?time_one)
???BEGIN
??????CASE?cnt?IS
?????????WHEN?"000"?=>
????????????data?<=?first_num;--抢答号码
?????????WHEN?"010"?=>
????????????data?<=?time_ten;--计时十位
?????????WHEN?"011"?=>
????????????data?<=?time_one;--计时个位
?????????WHEN?OTHERS?=>
????????????data?<=?"1010";--A
??????END?CASE;
???END?PROCESS;
???
???--输出到数码管段选
???PROCESS?(cnt,data)
???BEGIN
if(cnt="010")then--计时十位,显示小数点
??????CASE?data?IS
?????????WHEN?"0000"?=>
????????????SEG?<=?NOT(X"c0")?OR?"10000000";
?????????WHEN?"0001"?=>
????????????SEG?<=?NOT(X"f9")?OR?"10000000";
?????????WHEN?"0010"?=>
????????????SEG?<=?NOT(X"a4")?OR?"10000000";
?????????WHEN?"0011"?=>
????????????SEG?<=?NOT(X"b0")?OR?"10000000";
?????????WHEN?"0100"?=>
????????????SEG?<=?NOT(X"99")?OR?"10000000";
?????????WHEN?"0101"?=>
????????????SEG?<=?NOT(X"92")?OR?"10000000";
?????????WHEN?"0110"?=>
????????????SEG?<=?NOT(X"82")?OR?"10000000";
?????????WHEN?"0111"?=>
????????????SEG?<=?NOT(X"f8")?OR?"10000000";
?????????WHEN?"1000"?=>
????????????SEG?<=?NOT(X"80")?OR?"10000000";
?????????WHEN?"1001"?=>
????????????SEG?<=?NOT(X"90")?OR?"10000000";
?????????WHEN?"1010"?=>
????????????SEG?<=?"00000000"?OR?"10000000";
when?others=>
SEG?<=?"00000000";
??????END?CASE;

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1054

  • 2-240Z91I402304.doc
    下载

相关推荐