文档详情

参考答案上机练习二:组合逻辑电路设计

y****n
实名认证
店铺
DOC
197.01KB
约8页
文档ID:158419753
参考答案上机练习二:组合逻辑电路设计_第1页
1/8

VHDL与复杂数字系统设计上机实验2:组合逻辑电路的VHDL程序设计一、 实验目的:1. 掌握在Max+plusII中,使用硬件描述语言设计电路的基本操作步骤;2. 运用所学VHDL的描述语句完成组合逻辑电路的设计二、 实验任务:从下列各题中任选一题完成1. 试用两种描述方法,设计一个四位乘法运算器,并对两种方法所描述电路的性能进行比较该乘法器有两个操作数输入端口,有一个乘积结果输出端口,采用标准逻辑位或位矢量数据类型2. 试用两种描述方法,设计一个四位全减器,并对两种方法所描述电路的性能进行比较该减法器有两个操作数输入端口、一个借位输入端口、一个结果输出端口、一个借位输出端口,采用标准逻辑位或位矢量数据类型3. 设计一个四位十进制数显示器,每一个字码都由一个BCD码-7段译码显示器驱动,即该电路包括4个BCD码-7段译码显示器,要求该电路必须设计成能够自动去掉4位中高位上的零,比如十进制数0908,显示时应为908,故BCD码-7段译码显示器应具有灭零功能该电路的端口包括:四个BCD码输入端口、四个7段译码输出端口三、 实验报告要求:给出完整的VHDL语言程序,程序应包括:库和包集合说明(必要时)、实体和结构体;若使用了元件,要给出底层元件的VHDL语言描述;给出系统自动生成的引脚框图;对所设计电路进行功能仿真;进行适当分析。

四、 参考答案:1. 乘法器方法一 利用算术运算符、包集合定义library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mula isport( a,b :in std_logic_vector(3 downto 0); c :out std_logic_vector(7 downto 0));end mula;architecture rtl of mula isbegin c<=a*b;end rtl;** DEVICE SUMMARY **Chip/ Input Output Bidir LCsPOF Device Pins Pins Pins LCs % Utilizedmula EPF6010ATC100-1 8 8 0 32 3 %User Pins: 8 8 0 方法二 利用部分积连加法library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mulb isport( a,b :in std_logic_vector(3 downto 0); c :out std_logic_vector(7 downto 0));end mulb;architecture rtl of mulb issignal tmp1:std_logic_vector(3 downto 0);signal tmp2:std_logic_vector(4 downto 0);signal tmp3:std_logic_vector(5 downto 0);signal tmp4:std_logic_vector(6 downto 0);begin tmp1<= a when b(0)='1' else "0000"; tmp2<= a & '0' when b(1)='1' else "00000"; tmp3<= a & "00" when b(2)='1' else "000000"; tmp4<= a & "000" when b(3)='1' else "0000000"; c<=tmp1 +tmp2 +tmp3 +('0' & tmp4);end rtl;** DEVICE SUMMARY **Chip/ Input Output Bidir LCsPOF Device Pins Pins Pins LCs % Utilizedmulb EPF6010ATC100-1 8 8 0 29 3 %User Pins: 8 8 0 减法器输入减法器输出abc0subc100000001110101101101100101010011000111112. 四位全减器方法一 基于逻辑表达式一位全减器的真值表如下所示,可得到一位全减器的逻辑表达式,,再将每位级联,采用generate语句可完成四位全减器描述。

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity subtracter1 isport( a,b : in std_logic_vector(3 downto 0); c0 : in std_logic; c1 : out std_logic; sub : out std_logic_vector(3 downto 0));end subtracter1;architecture rtl of subtracter1 issignal ctmp:std_logic_vector(4 downto 0);begin ctmp(0)<= c0; gen1:for i in 0 to 3 generate sub(i)<= a(i) xor b(i) xor ctmp(i); ctmp(i+1)<= (not a(i) and b(i)) or (not a(i) and ctmp(i)) or (ctmp(i) and b(i)); end generate; c1<=ctmp(4);end rtl;** DEVICE SUMMARY **Chip/ Input Output Bidir LCsPOF Device Pins Pins Pins LCs % Utilizedsubtracter1 EPF6010ATC100-1 9 5 0 8 0 %User Pins: 9 5 0 方法二 基于算术表达式library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity subtracter2 isport( a,b : in std_logic_vector(3 downto 0); c0 : in std_logic; c1 : out std_logic; sub : out std_logic_vector(3 downto 0));end subtracter2;architecture rtl of subtracter2 issignal c0plusb,atmp:std_logic_vector(4 downto 0);begin process(a,b,c0) begin atmp<='0'&a; c0plusb<=c0+b; if atmp>=c0plusb then c1<='0'; sub<= a - c0plusb; else c1<='1'; sub<= "10000"-b-c0+ a; end if; end process;end rtl;** DEVICE SUMMARY **Chip/ Input Output Bidir LCsPOF Device Pins Pins Pins LCs % Utilizedsubtracter2 EPF6010ATC100-1 9 5 0 25 2 %User Pins: 9 5 0 3.四位十进制数显示电路首先,设计一个带灭零功能的BCD码-7段译码显示器,输入rbi为‘1’时,要求灭零;否则显示零。

rbo为灭零输出,作为其后的级联显示器是否灭零的控制信号entity sevsegrb isport( rbi:in bit; bcd:in bit_vector(3 downto 0); seg:out bit_vector(6 downto 0); rbo:out bit);end sevsegrb;architecture rtl of sevsegrb isbeginprocess(rbi,bcd)begin if (bcd="0000" and rbi='1') then --suppress 0 seg<="0000000"; rbo<='1'; elsif (bcd="0000" and rbi='0') then -- display 0 seg<="1111110"; rbo<='0'; else case bcd is when "0001" => seg<="0110000"; --1 when "0010" => seg<="1101101"; --2 when "0011" => seg<="1111001"; --3 when "0100" => seg<="0110011"; --4 when "0101" => seg<="1011011"; --5 when "0110" => seg<="1011111"; --6 when "0111" => seg<="1110000"; --7 when "1000" => seg<="1111111"; --8 when "1001" => seg<="1111011"; --9 when others => seg<="0000000"; --blank end case; rbo <= '0'; end if;end process;end rtl;** DEVICE SUMMARY **Chip/ Input Output Bidir LCsPOF Device Pins Pins Pins LCs % Utilizedsevsegrb EPF6010ATC100-1 5 8 0 18 2 %User Pins: 5 8 0 接着,利用该元件设计四位十进制数显示电路。

entity sevsegrb_4bit isport( rbi:in bit; bcd1,bcd2,bcd3,bcd4:in bit_vector(3 downto 0); seg1,seg2,seg3,seg4:out bit_vector(6 downto 0); rbo:out bit);end sevsegrb_4bit;architecture rtl of sevsegrb_4bit iscomponent sevsegrbport( rbi:in bit; bcd:in bit_vector(3 downto 0); seg:out bit_vector(6 downto 0); rbo:out bit);end component;signal rb:bit_vector(3 downto 1);beginu4:sevsegrb port map ( rbi,bcd4,seg4,rb(1));u3:sevsegrb port map ( rb(1),bcd3,seg3,rb(2));u2:sevsegrb port map ( rb(2),bcd2,seg2,rb(3));u1:sevsegrb port map ( rb(3),bcd1,seg1,rbo);end rtl;** DEVICE SUMMARY **Chip/ Input Output Bidir LCsPOF Device Pins Pins Pins LCs % Utilizedsevsegrb_4bit EPF6010ATC100-1 17 29 0 74 8 %User Pins: 17 29 0 。

下载提示
相关文档
正为您匹配相似的精品文档