当前位置:文档之家› 实验一 4位全加器的设计

实验一 4位全加器的设计

实验一4位全加器的设计一、实验目的:1 熟悉QuartusⅡ与ModelSim的使用;2 学会使用文本输入方式和原理图输入方式进行工程设计;3 分别使用数据流、行为和结构化描述方法进行四位全加器的设计;4 理解RTL视图和Technology Map视图的区别;5 掌握简单的testbench文件的编写。

二、实验原理:一个4位全加器可以由4个一位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的进位输入信号cin相接。

三、实验内容:1.QuartusII软件的熟悉熟悉QuartusⅡ环境下原理图的设计方法和流程,可参考课本第4章的内容,重点掌握层次化的设计方法。

2.设计1位全加器原理图设计的原理图如下所示:VHDL源程序如下(行为描述):-- Quartus II VHDL Template-- Unsigned Adderlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity f_add isport(a : in std_logic;b : in std_logic;ci : in std_logic;y : out std_logic;co : out std_logic);end entity;architecture rtl of f_add isbegin(co,y)<=('0',a)+('0',b)+('0',ci);end rtl;VHDL源程序如下(行为描述)的RTL与technology map视图VHDL源程序如下(数据流描述):-- Quartus II VHDL Template-- Unsigned Adderlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity f_add_df isport(a : in std_logic;b : in std_logic;ci : in std_logic;y : out std_logic;co : out std_logic);end entity;architecture rtl of f_add_df is beginy<=a xor b xor ci;co<=((a xor b) and ci) or (a and b); end rtl;VHDL源程序如下(数据流描述)的RTL与technology map视图:VHDL源程序如下(结构化描述):-- Quartus II VHDL Template-- Unsigned Adderlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity f_add_st isport(af : in std_logic;bf : in std_logic;cif : in std_logic;yf : out std_logic;cof : out std_logic);end entity;architecture rtl of f_add_st is COMPONENT h_addPORT(a : IN STD_LOGIC;b : IN STD_LOGIC;y : OUT STD_LOGIC;co : OUT STD_LOGIC);END COMPONENT;signal s1:std_LOGIC;signal co1:std_LOGIC;signal co2:std_LOGIC;beginU1: h_add port map(a=> af,b=> bf,y=>s1,co=> co1 ); U2: h_add port map (a=> s1,b=> cif,y=> yf,co=> co2 ); cof <= co1 or co2;end rtl;VHDL源程序如下(结构化描述)的RTL与technology map视图:Testbench文件源程序如下:LIBRARY cycloneiii ;LIBRARY ieee ;USE cycloneiii.cycloneiii_components.all ; USE ieee.std_logic_1164.all ;ENTITY f_add_st_tb ISEND ;ARCHITECTURE f_add_st_tb_arch OF f_add_st_tb IS SIGNAL bf : STD_LOGIC :='0' ;SIGNAL cof : STD_LOGIC ;SIGNAL cif : STD_LOGIC :='0' ;SIGNAL af : STD_LOGIC :='0' ;SIGNAL yf : STD_LOGIC ;COMPONENT f_add_stPORT (bf : in STD_LOGIC ;cof : out STD_LOGIC ;cif : in STD_LOGIC ;af : in STD_LOGIC ;yf : out STD_LOGIC );END COMPONENT ;BEGINDUT : f_add_stPORT MAP (bf => bf ,cof => cof ,cif => cif ,af => af ,yf => yf ) ;af <= '1' after 400ns;bf <= '1' after 200ns,'0' after 400ns,'1' after 600ns;cif <= not cif after 100ns;END ;功能仿真波形如下:时序仿真波形如下:3.利用层次化原理图方法设计4位全加器(1)生成新的空白原理图,作为4位全加器设计输入(2)利用已经生成的1位全加器作为电路单元,设计4位全加器。

原理图设计如下(结构化描述):原理图设计如下(结构化描述)的RTL与technology map视图:VHDL源程序如下(结构化描述):-- Quartus II VHDL Template-- Unsigned Adderlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity f4_add_bh isport(a : in std_logic_vector(3 downto 0);b : in std_logic_vector(3 downto 0);ci : in std_logic;y : out std_logic_vector(3 downto 0);co : out std_logic);end entity;architecture bh of f4_add_bh issignal yin:std_logic_vector(4 downto 0); beginyin<=('0'&a)+('0'&b)+('0'&ci);y<=yin(3 downto 0);co<=yin(4);end bh ;VHDL源程序如下(结构化描述)的RTL与technology map视图:Testbench源程序如下:LIBRARY cycloneiii ;LIBRARY ieee ;USE cycloneiii.cycloneiii_components.all ;USE ieee.std_logic_1164.all ;USE ieee.std_logic_unsigned.all;ENTITY f4_add_bh_tb ISEND ;ARCHITECTURE f4_add_bh_tb_arch OF f4_add_bh_tb IS SIGNAL ci : STD_LOGIC :='0' ;SIGNAL a : std_logic_vector (3 downto 0) :="0000" ; SIGNAL y : std_logic_vector (3 downto 0) ;SIGNAL b : std_logic_vector (3 downto 0) :="0000" ; SIGNAL co : STD_LOGIC ;COMPONENT f4_add_bhPORT (ci : in STD_LOGIC ;a : in std_logic_vector (3 downto 0) ;y : out std_logic_vector (3 downto 0) ;b : in std_logic_vector (3 downto 0) ;co : out STD_LOGIC );END COMPONENT ;BEGINDUT : f4_add_bhPORT MAP (ci => ci ,a => a ,y => y ,b => b ,co => co ) ;a<="1100" after 400ns,"1110"after 600ns;b<=b+"0010" after 100ns;END ;最终的功能仿真波形如下:最终的时序仿真波形如下:四、思考题1、试着论述功能仿真和时序仿真的差别?2、试着论述结构体的行为描述、数据流描述和结构描述的区别?3、如何构建四位并行加法器?。

相关主题