EDA实验与实践讲义
(3)硬件验证,以ALTERA公司的FLEX_EPF10K10TC144_4为下载目标。 ① 使用信号和模块: 用模块22和模块12,使用信号如下表所示: 输 入 芯片 芯 片 功能 输 出 芯片 芯 片 功 能 信号名 脚名 信号类别 信号名 脚名 信号类别 K1 P41 CIN OUT1 P116 SUM K2 P42 OUT2 P114 B COUT K3 P43 A ② 实验内容: 用开关K3,K2,K1 分别代表加法器的输入A,B,CIN; OUT1,OUT2分别代表其输出SUM,COUT;从输出指示LED观察OUT1,OUT2随输入K3,K2,K1的改变情况,看是否满足设计要求。 2、 设计扩展:
(1) 四位全加器的设计
①、用图形编辑器画出4位全加器的原理图 ? 模拟验证;
②、用文本编辑器写出4位全加器的VHDL结构描述 ? 模拟验证。 参考源程序如下:adder4b.vhd library ieee;
use ieee.std_logic_1164.all; entity adder4b is port(cin:in std_logic;
a,b:in std_logic_vector(3 downto 0); s:out std_logic_vector(3 downto 0); cout:out std_logic); end adder4b;
architecture struct of adder4b is component full_adder
PORT(A,B,CIN:IN STD_LOGIC; COUT,SUM:OUT STD_LOGIC); end component;
signal carry_out0,carry_out1,carry_out2:std_logic; begin
u1: full_adder
port map(cin=>cin,a=>a(0),b=>b(0), sum=>s(0),cout=>carry_out0); u2: full_adder
port map(cin=>carry_out0,a=>a(1),b=>b(1), sum=>s(1),cout=>carry_out1); u3: full_adder
port map(cin=>carry_out1,a=>a(2),b=>b(2), sum=>s(2),cout=>carry_out2); u4:add1bit
port map(cin=>carry_out2,a=>a(3),b=>b(3), sum=>s(3),cout=>cout); end struct;
(2) 八位全加器的设计
①、用Text Editor写出8位全加器的VHDL行为描述(最好使用重载运算符 \,可利用IEEE库中的std_logic_unsigned程序包)? 模拟验证, 参考源程序如下:adder8.vhd library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity adder8 is
port(cin:in std_logic;
a,b:in std_logic_vector(7 downto 0); s:out std_logic_vector(7 downto 0);
VHDL&Verilog HDL
21
EDA实验与实践讲义
cout:out std_logic); end adder8;
architecture strue of adder8 is component adder4b port(cin:in std_logic;
a:in std_logic_vector(3 downto 0); b:in std_logic_vector(3 downto 0); s:out std_logic_vector(3 downto 0); cout:out std_logic); end component;
signal carry_out:std_logic; begin
u1:adder4b
port map(cin=>cin,a=>a(3 downto 0),b=>b(3 downto 0), s=>s(3 downto 0),cout=>carry_out); u2:adder4b
port map(cin=>carry_out,a=>a(7 downto 4),b=>b(7 downto 4), s=>s(7 downto 4),cout=>cout); end strue;
八位全加器的设计文件层次结构Hierarchy Display如图2-4所示:
图2-4
②、用Wave Form Editor编辑激励波形 ? 模拟验证? 分析波形,注意分析输出与输
入之间的延迟,如图2-5所示,也可通过Max+plusII\\Timing Analyzer或者直接点击
进行分析,如图2-6所示,若要降低延迟源程序如何改进?
图2-5
VHDL&Verilog HDL
22
EDA实验与实践讲义
图2-6
(3)、1位全加器的设计
用Text Editor写出1位全加器的VHDL行为描述----含有进程的非结构化的逻辑描
述,通常由顺序语句描。 四、实验报告要求:
1、 总结基本组合逻辑电路的实现方法。 2、 总结VHDL语言的基本使用。
VHDL&Verilog HDL
23
EDA实验与实践讲义
实验三 组合逻辑电路设计之二 ----译码器和编码器设计
二、 实验目的
1、熟悉组合逻辑电路利用硬件描述语言进行设计的基本方法; 2、掌握VHDL语言的CASE语句,IF语句的应用;
3、进一步学习使用EDA集成设计软件Max+plus II进行电路的模拟、综合过程。 二、实验器材
1、AEDK_EDAII实验机及其附件 一台; 2、计算机:Pentium或相应处理器以上,有一个空余的并行口 一台; 三、 实验内容
1、三-八译码器设计,分别采用VHDL语言和逻辑图两种方式设计。 (1)、源程序:文件名decoder3.vhd library IEEE;
use IEEE.std_logic_1164.all;
entity decoder3 is port (
A,B,C: in STD_LOGIC;
OUT1,OUT2,OUT3,OUT4,OUT5,OUT6,OUT7,OUT8: out STD_LOGIC); end decoder3;
architecture decoder3 _arch of decoder3 is
SIGNAL K: STD_LOGIC_VECTOR (2 downto 0); SIGNAL POUT: STD_LOGIC_VECTOR (7 downto 0);
begin
K <= C & B & A; PROCESS(K) begin
CASE K IS
WHEN \ POUT<=\ WHEN \ POUT<=\ WHEN \ POUT<=\ WHEN \ POUT<=\ WHEN \ POUT<=\ WHEN \ POUT<=\ WHEN \ POUT<=\ WHEN others => POUT<=\ END CASE; end process;
OUT1 <= POUT(0); OUT2 <= POUT(1); OUT3 <= POUT(2); OUT4 <= POUT(3); OUT5 <= POUT(4); OUT6 <= POUT(5); OUT7 <= POUT(6); OUT8 <= POUT(7); end decoder3 _arch;
(2)、逻辑图: 文件名decoder3.gdf
VHDL&Verilog HDL 24
EDA实验与实践讲义
图3-1
(3)、硬件验证,以ALTERA公司的FLEX_EPF10K10TC144_4为下载目标。
① 使用信号和模块: 用模块22,23,12,使用信号如表3-1所示: 输 入 芯片 芯 片 功能 输 出 芯片 芯 片 功 能 信号名 脚名 信号类别 信号名 脚名 信号类别 K1 P41 OUT1 P116 A 译码!C!B!A K2 P42 OUT2 P114 B 译码!C!B A K3 P43 OUT3 P113 C 译码!C B!A OUT4 P112 译码!C B A OUT5 P111 译码 C!B!A OUT6 P110 译码 C!B A OUT7 P109 译码 C B!A OUT8 P102 译码 C B A 表3-1 ② 实验内容: 模块23的第7开关置为ON,其余为OFF,用开关K3,K2,K1 分别代表加法器的
输入C,B,A; OUT1~OUT8分别代表其输出;从输出指示LED观察OUT1~OUT8随输入K3,K2,K1的改变情况,看是否满足设计要求。 3、 7段LED译码显示器电路设计
七段数码管可以用来显示十进制数码,见图3-2。它包含有七个笔划,通过控制各笔划的亮
暗显示出数字。它的输入信号端(a, b, c, d, e, f, g)与显示数码(十进制数字)的对应关系如表3-2所示。对应的七段译码器电路图如图3-3所示。其输入为代表显示数字的二进制数(BCD码x4, x3, x2, x1),输出为数码管的输入信号。
表3-2 :七段数码管的输入代码与显示数码的对应关系 要显示的数字 输出代码 a b c d e f g 数字 BCD码 0 0000 1 1 1 1 1 1 0 1 0001 0 1 1 0 0 0 0 2 0010 1 1 0 1 1 0 1 3 0011 1 1 1 1 0 0 1 4 0100 0 1 1 0 0 1 1 5 0101 1 0 1 1 0 1 1 6 0110 1 0 1 1 1 1 1 7 0111 1 1 1 0 0 0 0 8 1000 1 1 1 1 1 1 1 9 1001 1 1 1 1 0 1 1 VHDL&Verilog HDL
25