实验二用七段LED显示8421BCD码的VHDL设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验⼆⽤七段LED显⽰8421BCD码的VHDL设计
E D A 实验报告(⼆)
实验地点:211⼤楼606&609
任课教师:窦衡
学⽣姓名:李志
学号:2402401024
实验⼆⽤七段LED显⽰8421BCD码的VHDL设计
⼀、预习内容
1、结合附录⼀了解EDA实验箱的原理;
2、七段LED显⽰原理;
3、怎样⽤VHDL实现8421BCD码在七段LED数码管上显⽰。

⼆、实验⽬的
1.了解VHDL进⾏EDA设计的基本步骤;
2.学会⽤MAX+PLUSⅡ进⾏时序仿真;
3.了解EDA实验箱的基本功能;
三、实验器材
PC机⼀台、EDA教学实验系统⼀台、下载电缆⼀根(已接好)、导线若⼲
四、实验内容
1.⽤VHDL设计具有清除端、使能端,计数范围为0~999的计数器设计。

输出
为8421BCD码;
2.⽤VHDL设计七段LED译码显⽰电路;
3.MAX+PLUSⅡ进⾏时序仿真;
4.下载该程序验证程序是否正确;
5.请事先准备⼀个软盘或优盘,本实验程序需要保存,后⾯实验需要⽤到。

五、实验步骤
1、写出七段译码器和具有清除端、使能端,计数范围为0~999的计数器的VHDL
源程序,编译通过;
2、进⾏波形仿真;
3、选定器件、映射管脚、编译、下载。

六、实验原理和设计
1、8421BCD编码
在数字系统中常⽤四位⼆进制代码来表⽰⼀位⼗进制数字0、1、2、﹒﹒﹒、9,称之为⼆-⼗进制代码,即BCD码。

将⼗进制数编成BCD码的电路,称为称⼆-⼗进制(BCD)编码器。

⼆-⼗进制编码的⽅案很多,若BCD编码器采⽤8421编
码⽅案,称为8421BCD编码器。

2、七段译码器
下图为译码器逻辑图,请按图进⾏连线。

其中A,B,C,D 接拨号开关,a,b,c,d,e,f,g 接数码显⽰接⼝,管脚映射均为I/O ⼝,映射后,通过拨号开关改变输⼊⼆进制码,则输出数码管上显⽰相应的数值。

3、实现框图
4、VHDL源程序:
--0-999BCD码计数器描述
LIBRARY IEEE;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
Entity COUNT100 Is
Port (Clk,Rst,En,Load: in std_logic;
data1,data2,data3: in std_logic_vector(3 downto 0); conl,conm,conh: buffer std_logic_vector(3 downto 0) ); End COUNT100;
Architecture COUNT of COUNT100 Is
Begin
process(Rst,Clk)
begin
if Rst = '1' then
conl<="0000";
conm<="0000";
conh<="0000";
elsif rising_edge(Clk) then
if En='1' then
conl<=conl;
conh<=conh;
conm<=conm;
elsif Load='1' then
conl<=data1;
conm<=data2;
conh<=data3;
elsif(conl="1001" and conm="1001" and conh="1001")then
conl<="0000";
conm<="0000";
conh<="0000";
elsif conl="1001" then
if conm="1001" then
conl<="0000";
conm<="0000";
conh<=conh+1;
else conm<=conm+1;
conl<="0000";
end if;
else conl<=conl+1; end if;
end if;
end process;
End COUNT;
--七段译码器描述
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity seven_code is
port(count:in std_logic_vector(3 downto 0); scode:out std_logic_vector(6 downto 0)); end seven_code; architecture behave of seven_code is
begin
process(count)
begin
case count is
when "0000"=>scode<="1111110"; when "0001"=>scode<="0110000"; when "0010"=>scode<="1101101"; when "0011"=>scode<="1111001"; when "0100"=>scode<="0110011"; when "0101"=>scode<="1011011"; when "0110"=>scode<="1011000"; when "0111"=>scode<="1110000"; when "1000"=>scode<="1111111"; when "1001"=>scode<="1111011"; when others=>scode<="0000000"; end case;
end process;
end behave;
七、试验结果及总结
1、系统仿真情况:
计数器时序仿真结果如下图所⽰
系统时序仿真结果如下图所⽰
2、结果分析:
由系统时序仿真结果可以看出,本系统符合设计要求,计数器的三位计数值由七段译码器译码输出。

⼋、实验⼼得体会
通过这次试验我了解了VHDL进⾏EDA设计的基本步骤,学会了⽤MAX+PLUS Ⅱ进⾏时序仿真,了解了EDA实验箱的基本功能。

九、问题及思考
如果要求译出0~9和‘-’,程序该如何修改呢?
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity seven_code is
port(count:in std_logic_vector(3 downto 0);
scode:out std_logic_vector(6 downto 0));
end seven_code;
architecture behave of seven_code is
begin
process(count)
begin
case count is
when "0000"=>scode<="1111110";
when "0001"=>scode<="0110000";
when "0010"=>scode<="1101101";
when "0011"=>scode<="1111001";
when "0100"=>scode<="0110011";
when "0101"=>scode<="1011011"; when "0110"=>scode<="1011000"; when "0111"=>scode<="1110000"; when "1000"=>scode<="1111111"; when "1001"=>scode<="1111011"; when others=>scode<="0000001"; end case;
end process;
end behave;。

相关文档
最新文档