实验2:动态扫描显示电路设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验2:动态扫描显示电路设计
一、实验目的及要求
设计一个能对4个数码管进行动态扫描显示的控制电路。
二、实验仪器设备及软件平台
台式电脑、QuartusII 8.0软件、康芯公司EDA/SOPC实验箱。
三、实验设计及调试
1、实验内容
设计一个能对4个数码管进行动态扫描显示的控制电路,在前端挂上计数器以后,观察计数结果是否正确。
2、实验设计
先设计动态扫描显示控制电路,然后挂上计数器,观察是否工作正常。
(1)动态扫描电路控制程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity dtsm_ymq is
port(clk:in std_logic;
four,three,two,one:in std_logic_vector(3 downto 0);
x:out std_logic_vector(6 downto 0);
led_select: out std_logic_vector(3 downto 0));
end;
architecture behave of dtsm_ymq is
signal bcd_in:std_logic_vector(3 downto 0);
signal cnt2: std_logic_vector(2 downto 0):="000";
begin
p1:process(clk)
if clk'event and clk='1' then
if cnt2>="100" then cnt2<="001";
else cnt2<=cnt2+'1';
end if;
end if;
end process;
p2:process(cnt2)
begin
case cnt2 is
when "000"=>led_select<="1111";
when "001"=>led_select<="1110";
when "010"=>led_select<="1101";
when "011"=>led_select<="1011";
when "100"=>led_select<="0111";
when others=>led_select<="1111";
end case;
end process;
p3:process(cnt2,four,three,two,one)
begin
case cnt2 is
when "000"=>bcd_in<="0000";
when "001"=>bcd_in<=one;
when "010"=>bcd_in<=two;
when "011"=>bcd_in<=three;
when "100"=>bcd_in<=four;
when others=>bcd_in<="0000";
end case;
end process;
p4:process(bcd_in)
case bcd_in is
when "0000"=>x<="0111111";
when "0001"=>x<="0000110";
when "0010"=>x<="1011011";
when "0011"=>x<="1001111";
when "0100"=>x<="1100110";
when "0101"=>x<="1101101";
when "0110"=>x<="1111101";
when "0111"=>x<="0000111";
when "1000"=>x<="1111111";
when "1001"=>x<="1101111";
when others=>x<="0000000";
end case;
end process;
end behave;
其生成的模块符号如图1所示。
(2)在四个输入端挂上计数器或者给定数值,观察数码管显示是否正常。
3、实验步骤
①设计扫描电路控制程序;
②建立项目并编译项目;
③功能仿真;
⑥锁定引脚及二次编译:根据电路板的要求锁定引脚,再次进行全局编译;
⑦程序下载:用USB接口的JTAG下载器将程序下载到FPGA片内RAM中。
4、调试查错
程序下载完成后,测试能否正常实现显示功能。
四、实验总结
动态扫描电路最大限度节省口线资源,具有很高应用价值。