当前位置:文档之家› 专用集成电路实验报告

专用集成电路实验报告

《专用集成电路》实验报告姓名专业通信工程班级学号指导教师实验一开发平台软件安装与认知实验一、实验目的1、了解Xilinx ISE 9.2/Quartus II软件的功能。

2、掌握Xilinx ISE 9.2/Quartus II的VHDL输入方法。

3、掌握Xilinx ISE 9.2/Quartus II的原理图文件输入和元件库的调用方法。

4、掌握Xilinx ISE 9.2/Quartus II软件元件的生成方法和调用方法。

5、掌握Xilinx ISE 9.2/Quartus II编译、功能仿真和时序仿真。

6、掌握Xilinx ISE 9.2/Quartus II原理图设计、管脚分配、综合与实现、数据流下载方法。

7、了解所编电路器件资源的消耗情况。

二、实验用到的软件和器件计算机、Quartus II软件或xilinx ISE三、实验内容:1、本实验以三线八线译码器(LS74138)为例,在Xilinx ISE 9.2软件平台上完成设计电路的VHDL文本输入、语法检查、编译、仿真、管脚分配和编程下载等操作。

下载芯片选择Xilinx 公司的CoolRunner II系列XC2C256-7PQ208作为目标仿真芯片。

2、用1中所设计的的三线八线译码器(LS74138)生成一个LS74138元件,在Xilinx ISE 9.2软件原理图设计平台上完成LS74138元件的调用,用原理图的方法设计三线八线译码器(LS74138),实现编译,仿真,管脚分配和编程下载等操作。

四、实验步骤:1、三线八线译码器(LS74138)VHDL电路设计(1)三线八线译码器(LS74138)的VHDL源程序的输入(2)设计文件存盘与语法检查(3)仿真文件设计(4)芯片管脚定义(5)编译与综合(6)编程下载2、元件的生成、调用和仿真五、实验原理VHDL源程序process(g1,g2,inp)beginif((g1 and g2)='1') thencase inp iswhen "000"=>y<="00000001";when "001"=>y<="00000010";when "010"=>y<="00000100";when "011"=>y<="00001000";when "100"=>y<="00010000";when "101"=>y<="00100000";when "110"=>y<="01000000";when "111"=>y<="10000000";when others=>y<="00000000";end case;elsey<="00000000";end if;end process;测试向量参考程序uut: ls74138 PORT MAP(G1 => G1,G2 => G2,INP => INP,Y => Y);-- *** Test Bench - User Defined Section *** u1:PROCESSBEGING1<='0';wait for 10 us;G1<='1';wait for 90 us;G1<='0';wait;END PROCESS u1;u2:PROCESSBEGING2<='0';wait for 10 us;G2<='1';wait for 90 us;G2<='0';wait;END PROCESS u2;u3:PROCESSBEGININP<="000";wait for 20 us;INP<="001";wait for 10 us;INP<="010";wait for 10 us;INP<="011";wait for 10 us;INP<="100";wait for 10 us;INP<="101";wait for 10 us;INP<="110";wait for 10 us;INP<="111";wait;end PROCESS u3;六、实验结果上图中,g1和g2为两个使能控制信号,inp为命令码输入信号,y为8位译码输出信号。

,当g1与g2均为高电平时,译码器正常工作,译码如上。

生成元件图实验二组合逻辑电路的VHDL语言实现一、实验目的:1、掌握VHDL语言设计基本单元及其构成2、掌握用VHDL语言设计基本的组合逻辑电路的方法。

3、掌握VHDL语言的主要描述语句。

二、实验器材:计算机、Quartus II软件或Xilinx ISE三、实验内容:以下三个内容选择两个完成用VHDL语言实现八位加法器的设计并实现功能仿真。

四、实验步骤:(一)用VHDL语言实现八位加法器的设计并实现功能仿真。

1、完成1位全加器设计,在Xilinx ISE软件平台上完成设计电路的VHDL文本输入,编辑,编译,仿真,管脚分配和编程下载等操作。

下载芯片选择Xilinx公司的CoolRunner II系列XC2C256-7PQ208作为目标仿真芯片。

2、用实验内容1所设计的全加器的VHDL文件生成一个adder的元件,在Xilinx ISE软件原理图设计平台上完成adder元件的调用,用原理图的方法设计一个8位二进制加法器,实现编译,仿真,管脚分配和编程下载等操作。

原理:全加器是带进位信号的加法器,其逻辑表达式为:carryindataBdataASum++=。

它的真值表如表1所示,其中dataA和dataB为加数与被加数,carryin是输入的进位位信号,而Sum是和数,carryout是输出进位位信号。

参考真值表,实现八位全加器的功能。

表1(二)用实验内容1所设计的全加器的VHDL文件生成一个adder的元件,在Xilinx ISE软件原理图设计平台上完成adder元件的调用,用原理图的方法设计一个8位二进制加法器。

(三)用VHDL语言实现优先编码器的设计并实现功能仿真五、实验原理VHDL源程序library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;-- Uncomment the following lines to use the declarations that are-- provided for instantiating Xilinx primitive components.--library UNISIM;--use UNISIM.VComponents.all;entity adder isPort ( a : in std_logic;b : in std_logic;cin : in std_logic;sum : out std_logic;cout : out std_logic);end adder;architecture Behavioral of adder isbeginsum <= (a xor b) xor cin;cout <= (a and b) or (cin and a) or (cin and b);end Behavioral;测试向量程序uut: adder PORT MAP(a => a,b => b,cin => cin,sum => sum,cout => cout);u1: PROCESSBEGINa<='0';wait for 10 us;a<='1';wait for 20 us;a<='0';wait for 10 us;a<='1';wait for 10 us;a<='0';wait for 20 us;a<='1';wait for 10 us;a<='0';wait for 10 us; a<='1';wait;END PROCESS u1; u2:processbeginb<='1';wait for 10 us;b<='0';wait for 10 us;b<='1';wait for 10 us;b<='0';wait for 10 us;b<='1';wait for 20 us;b<='0';wait for 10 us;b<='1';wait for 10 us;b<='0';wait for 20 us;b<='1';wait;END PROCESS u2; u3: processbegincin<='0';wait for 40 us;cin<='1';wait for 20 us;cin<='0';wait;end process u3;六、实验结果与分析2.1原件连接图实验三时序逻辑电路的VHDL语言实验一、实验目的:1、掌握用VHDL语言设计基本的时序逻辑电路及仿真。

2、掌握VHDL顺序语句和并行语句的异同3、掌握触发器同步复位和异步复位的实现方式。

4、掌握软件时钟的加入方法。

5、掌握信号和变量的主要区别。

二、实验器材:计算机、Quartus II软件或xilinx ISE三、实验内容:设计一带使能的同步复位清零的递增8位二进制计数器设计一带使能的异步清零复位的递增8位二进制计数器四、实验步骤:五、实验原理参考程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ycounter isport(clk,clear,ld,enable:in std_logic;d:in std_logic_vector(7 downto 0);qk:out std_logic_vector(7 downto 0));end ycounter;architecture a_ycounter of ycounter isbeginPROCESS (clk)VARIABLE cnt :std_logic_vector(7 downto 0);BEGINIF (clk'EVENT AND clk = '1') THENIF(clear = '0') THENcnt := "00000000";ELSEIF(ld = '0') THENcnt := d;ELSEIF(enable = '1') THENcnt := cnt + "00000001";END IF;END IF;END IF;END IF;qk <= cnt;END PROCESS;end a_ycounter;测试向量-- VHDL Test Bench Created from source file ycounter.vhd -- 16:50:55 03/24/2008-- Notes:-- This testbench has been automatically generated using types std_logic and-- std_logic_vector for the ports of the unit under test. Xilinx recommends-- that these types always be used for the top-level I/O of a design in order-- to guarantee that the testbench will bind correctly to the post-implementation-- simulation model.--LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.numeric_std.ALL;ENTITY ycounter_a_ycounter_vhd_tb ISEND ycounter_a_ycounter_vhd_tb;ARCHITECTURE behavior OF ycounter_a_ycounter_vhd_tb IS COMPONENT ycounterPORT(clk : IN std_logic;clear : IN std_logic;ld : IN std_logic;enable : IN std_logic;d : IN std_logic_vector(7 downto 0);qk : OUT std_logic_vector(7 downto 0));END COMPONENT;constant clk_cycle: time:=20 us;SIGNAL clk : std_logic;SIGNAL clear : std_logic;SIGNAL ld : std_logic;SIGNAL enable : std_logic;SIGNAL d : std_logic_vector(7 downto 0);SIGNAL qk : std_logic_vector(7 downto 0);BEGINuut: ycounter PORT MAP(clk => clk,clear => clear,ld => ld,enable => enable,d => d,qk => qk);-- *** Test Bench - User Defined Section *** u1 : PROCESSBEGINclk<='0';wait for clk_cycle/2;clk<='1';wait for clk_cycle/2;clk<='0';wait for clk_cycle/2;clk<='1';wait for clk_cycle/2;clk<='0';wait for clk_cycle/2;clk<='1';wait for clk_cycle/2;clk<='0';wait for clk_cycle/2;clk<='1';wait for clk_cycle/2;clk<='0';wait for clk_cycle/2;clk<='1';wait for clk_cycle/2;clk<='0';wait for clk_cycle/2;clk<='1';wait for clk_cycle/2;clk<='0';wait for clk_cycle/2;clk<='1';wait for clk_cycle/2;clk<='0';wait for clk_cycle/2;clk<='1';wait ;END PROCESS u1;u2: processbeginclear<='0';wait for clk_cycle;clear<='1';wait;end process;u3: processbeginld<='1';wait for clk_cycle*6;ld<='0';wait ;end process u3;u4: processbeginenable<='1';wait ;end process u4;u5: processbegind<="00001111";wait;end process u5;-- *** End Test Bench - User Defined Section *** END behavior;六、实验结果与分析波形仿真图同步清零由图可看出,同步清零时,在有效时钟即时钟上升沿来临时才清零。

相关主题