7段数码显示译码器设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA 技术实验报告
实验项目名称:7段数码显示译码器设计
实验日期:2012年6月4日实验成绩:
实验评定标准:
一、实验目的
学习7段数码显示译码器设计;学习VHDL的CASE语句应用及多层次设计方法。
二、实验器材
电脑一台、GW48 EDA/SOPC试验箱。
三、实验内容(实验过程)
实验内容1:说明程序中各语句的含义,以及该程序的整体功能。在quartusII 上对该程序进行编辑、编译、综合、适配、仿真,给出其所有信号的时序仿真波形。步骤:1)打开软件,选择菜单file—>new,在弹出的new对话框中选择Device Design Files 的VHDL File项,按OK键后进入VHDL文本编辑方式。
根据给出的7段数码显示译码器的参考程序。
2)将其另存为与实体名一致的文件,以确保后续的编译能够正常进行。然后在将该文件置顶,并进行编译。
3)编译完成后,对其进行仿真,建立波形文件。再次进行编译(否则进行仿真的时候会报错),编译完成后即可进行仿真。分析得到的结果。
实验内容2:引脚锁定及硬件测试。选用GW48 系统的实验电路模式6 用数码8 显示译码输出(P1046-PI040),键8、键7、键6 和键5 四位控制输入,硬件验证译码器的工作性能。
实验内容3:用元件例化语句,按下图的方式连接成顶层设计电路(用VHDL 表述),图中CNT4B 是一个4 为二进制加法器(也可利用实验五的加法计数器的程序,在实验中则利用后者),模块DECL7S 即该实验实体元件重复以上实验过程。图中temp 是4 位总线,led 是7 位总线。对于引脚和实验用模式6 用数码8 显示译码输出用键3 作为时钟输入或直接接时钟信号clock0。
四、实验程序
7端数码显示译码器的程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY DECL7S IS
PORT ( A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
LED7S:OUT
STD_LOGIC_VECTOR(6DOWNTO 0));
END DECL7S;
ARCHITECTURE one OF DECL7S IS BEGIN
PROCESS(A)
BEGIN
CASE A IS WHEN"0000"=>LED7S<="0111111"; WHEN"0001"=>LED7S<="0000110"; WHEN"0010"=>LED7S<="1011011"; WHEN"0011"=>LED7S<="1001111"; WHEN"0100"=>LED7S<="1100110"; WHEN"0101"=>LED7S<="1101101"; WHEN"0110"=>LED7S<="1111101"; WHEN"0111"=>LED7S<="0000111"; WHEN"1000"=>LED7S<="1111111"; WHEN"1001"=>LED7S<="1101111"; WHEN"1010"=>LED7S<="1110111"; WHEN"1011"=>LED7S<="1111100"; WHEN"1100"=>LED7S<="0111001";
WHEN"1101"=>LED7S<="1011110";
WHEN"1110"=>LED7S<="1111001"; WHEN"1111"=>LED7S<="1110001"; WHEN OTHERS=>NULL; END CASE; END PROCESS; END one;
实验五中加法计数器的代码
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all; entity cnt10 is
port(
clk,rst,en :in std_logic;
cq :out std_logic_vector(3 downto 0);
cout :out std_logic);
end cnt10;
architecture behav of cnt10 is begin
process(clk,rst,en)
variable
cqi :std_logic_vector(3 downto 0); begin
if rst ='1' then cqi :=(others=>'0');
elsif clk'event and clk='1' then
if en='1' then
if cqi<9 then cqi:=cqi+1;
else
cqi:=(others=>'0');
end if;
end if;
end if;
if cqi =9 then cout<='1';
else cout<='0';
end if;
cq<=cqi;
end process;
end behav;
元件例化语句构成的顶层文件
library ieee;
use ieee.std_logic_1164.all; entity tan is
port(clock0:in std_logic;
rat0:in std_logic;
ena0:in std_logic;
led:out std_logic_vector (6 downto 0); cout0:out std_logic);
end tan;
architecture lang of tan is
signal tmp:std_logic_vector (3 downto 0);
component cnt10
port(
clk,rst,en :in std_logic;