




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、专用集成电路实验报告班 级:13050Z01姓 名:潘恩高学 号:1305024343任课教师:辛洁实验一 开发平台软件安装与认知实验实验性质:验证性 实验级别:必做开课单位:信息与通信工程学院通信工程系 学时:2学时一、实验目的: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 IS
2、E 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中所设计的的三线八线译码器
3、(LS74138)生成一个LS74138元件,在Xilinx ISE 9.2软件原理图设计平台上完成LS74138元件的调用,用原理图的方法设计三线八线译码器(LS74138),实现编译,仿真,管脚分配和编程下载等操作。四、实验源程序: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 i
4、nstantiating Xilinx primitive components.-library UNISIM;-use UNISIM.VComponents.all;entity ls74138 is Port ( g1 : in std_logic; g2 : in std_logic; inp : in std_logic_vector(2 downto 0); y : out std_logic_vector(7 downto 0);end ls74138;architecture Behavioral of ls74138 isbeginprocess(g1,g2,inp)begi
5、n if(g1 and g2)='1') then case inp is when "000"=>y<="00000001" when "001"=>y<="00000010" when "010"=>y<="00000100" when "011"=>y<="00001000" when "100"=>y<="00010000&
6、quot; when "101"=>y<="00100000" when "110"=>y<="01000000" when "111"=>y<="10000000" when others=>y<="00000000" end case; else y<="00000000" end if;end process;end Behavioral;五、实验结果与分析图1上图中,g1和g
7、2为两个使能控制信号,inp为命令码输入信号,y为8位译码输出信号。,当g1与g2均为高电平时,译码器正常工作,译码如上。生成元件如下:图2五、预习与思考:思考:比较VHDL语言和原理图的设计方法,这两种设计各有哪些优缺点。原理图设计法优缺点:优点: 1)可以与传统的数字电路设计法接轨,即使用传统设计方法得到电路原理图,然后在Quartus平台完成设计电路的输入、仿真验证和综合,最后下载到目标芯片中。 2) 它将传统的电路设计过程的布局布线、绘制印刷电路板、电路焊接、电路加电测试等过程取消,提高了设计效率,降低了设计成本,减轻了设计者的劳动强度。缺点: 1)原理图设计方法没有实现标准化,不同的
8、EDA软件中的图形处理工具对图形的设计规则、存档格式和图形编译方式都不同,因此兼容性差,难以交换和管理。 2)由于兼容性不好,性能优秀的电路模块的移植和再利用非常困难难以实现用户所希望的面积、速度以及不同风格的综合优化 3)原理图输入的设计方法不能实现真实意义上的自顶向下的设计方案,无法建立行为模型,从而偏离了电子设计自动化最本质的涵义。VHDL语言设计法优缺点:优点: 1)功能强大,灵活性强; 2)不依赖于器件设计; 3) 可移植性, 因为VHDL是一个标准语言, 故VHDL的设计描述可以被不同的工具所支持。缺点: 1)电路采用高级的简明结构VHDL描述, 意味着放弃了对电路门级实现定义的控
9、制; 2)由综合工具生成的逻辑实现效果有时不优化; 3)采用工具的不同导致综合质量不一样。实验二 组合逻辑电路的VHDL语言实现实验性质:验证性 实验级别:必做开课单位:信息与通信工程学院通信工程系 学时:2学时一、实验目的:1、掌握VHDL语言设计基本单元及其构成2、掌握用VHDL语言设计基本的组合逻辑电路的方法。3、掌握VHDL语言的主要描述语句。二、实验器材:计算机、Quartus II软件或Xilinx ISE三、实验内容:以下三个内容选择两个完成(一)、用VHDL语言实现八位加法器的设计并实现功能仿真。(二)、用VHDL语言实现优先编码器的设计并实现功能仿真(三)、用VHDL语言实现
10、四选一选择器的设计并实现功能仿真。四、实验步骤:(二)、用VHDL语言实现优先编码器的设计并实现功能仿真优先计编码器常用于中断的优先级控制,以8位输入,3位二进制输出的优先级编码器为例,当其中一个输入有效时,就可以输出一个对应得3位二进制 编码。另外,当同时有几个输入有效时,将输出优先级最高的那个输入所对应得二进制编码。其真值表如下所示:表2 优先编码器真值表输入二进制编码输出Input7Input6Input5Input4Input3Input2Input1Input0Y2Y1Y0xxxxxxx0111xxxxxx01110xxxxx011101xxxx0111100xxx01111011x
11、x011111010x0111111001x1111111000用VHDL语言实现优先编码器的设计并实现功能仿真验证其功能。参考程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY priorityencoder IS PORT (input:IN STD_LOGIC_VECTOR (7 DOWNTO 0); y:OUT STD_LOGIC_VECTOR (2 DOWNTO 0);END priorityencoder;ARCHITECTURE rt1 OF priorityencoder ISBEGIN PROCESS (input) BE
12、GIN IF(input(0)='0') THEN y<="111" ELSIF(input(1)='0') THEN y<="110" ELSIF(input(2)='0') THEN y<="101" ELSIF(input(3)='0') THEN y<="100" ELSIF(input(4)='0') THEN y<="011" ELSIF(input(5)='0
13、9;) THEN y<="010" ELSIF(input(6)='0') THEN y<="001" ELSE y<="000" END IF; END PROCESS;END rtl;仿真图如下:由上图可以看出,当其中一个输入有效时,就可以输出一个对应得3位二进制编码。另外,当同时有几个输入有效时,将输出优先级最高的那个输入即最低位的输入所对应得二进制编码。(三)、用VHDL语言实现四选一选择器的设计并实现功能仿真。选择器常用于信号的切换,四选一选择器可以用于4路信号的切换。其真值表如下所示: 表
14、3 四选一真值表选择输入数据输入数据输出baInput0Input1Input2Input3y000xxx0001xxx101x0xx001x1xx110xx0x010xx1x111xxx0011xxx11用VHDL语言实现四选一选择器的设计并实现功能仿真。参考程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 IS PORT (input:IN STD_LOGIC_VECTOR (3 DOWNTO 0); a,b:IN STD_LOGIC; y:OUT STD_LOGIC);END mux4;ARCHITECTURE rt1 O
15、F mux4 ISSIGNAL se1:STD_LOGIC_VECTOR (1 DOWNTO 0);BEGIN se1<=b&a; PROCESS (input,se1) BEGIN IF(se1="00")THEN y<=input(0); ELSIF(se1="01")THEN y<=input(1); ELSIF(se1="10")THEN y<=input(2); ELSE y<=input(3); END IF; END PROCESS;END rt1;实验波形图:b、a为选择输入端,i
16、nput为数据输入端,y为输出,由图可见程序仿真实现了四选一的选择输出。六、预习与思考预习:在实验前编好实验程序,做实验时验证。实验三 时序逻辑电路的VHDL语言实验实验性质:设计性 实验级别:必做开课单位:信息与通信工程学院通信工程系 学时:3学时一、实验目的:1、掌握用VHDL语言设计基本的时序逻辑电路及仿真。 2、掌握VHDL顺序语句和并行语句的异同3、掌握触发器同步复位和异步复位的实现方式。4、掌握软件时钟的加入方法。5、掌握信号和变量的主要区别。二、实验器材:计算机、Quartus II软件或xilinx ISE三、实验内容:(3选1)(一)、设计一个60进制的计数器(二)、设计一带
17、使能的同步复位清零的递增8位二进制计数器(三)、设计一带使能的异步清零复位的递增8位二进制计数器四、实验步骤:1、设计一个60进制的计数器并实现仿真2、设计一带使能的同步复位清零的递增计数器并实现时序仿真。3、设计一带使能的异步复位清零的递增计数器并实现时序仿真。4、测试向量设计实验源程序:LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY ycounter ISPORT(clk, clear_yi,clear_tong: INSTD_LOGIC;daout: out std_logic
18、_vector (6 downto 0);END entity ycounter;ARCHITECTURE fun OF ycounter ISSIGNAL count: STD_LOGIC_VECTOR( 6 downto 0);BEGINdaout <= count; process ( clk ,clear_yi,clear_tong) begin if (clear_yi='0') then count <= "0000000" elsif (clk 'event and clk='1') thenif(clear
19、_tong<='0')then count <= "0000000" elsif (count(3 downto 0)="1001") then if (count <16#60#) then if (count="1011001") then count<="0000000" ELSE count<=count+7; end if; else count<="0000000" end if; elsif (count < 16#60#)
20、 then count <= count+1; else count<="0000000" end if; end if; end process;END fun;仿真图图下:同步清零由图可看出,同步清零时,在有效时钟即时钟上升沿来临时才清零。异步清零由图可以看出,当异步清零端置零时,计数器立即清零。六、预习与思考:思考:VHDL语言中信号和变量有什么区别?区别如下: 1)信号赋值至少要有延时;而变量赋值没有。 2)信号除当前值外有许多相关的信息,如历史信息和投影波形;而变量只有当前值。 3)进程对信号敏感而不对变量敏感。 4)信号可以是多个进程的全局信号;而变
21、量只在定义他们的顺序域可见(共享变量除外)。 5)信号是硬件中连线的抽象描述,他们的功能是保存变化的数据值和连接子元件,信号在元件的端口连接元件。变量在硬件中没有类似的对应关系,他们用于硬件特性的高层次建模所需要的计算中。实验四 VHDL层次化设计方法实验实验性质:验证性 实验级别:必做开课单位:信息与通信工程学院通信工程系 学时:3学时一、实验目的:1、掌握用VHDL语言层次化设计的基本方法。 2、掌握GENERATE语句的用法。二、实验器材:计算机、Quartus II软件或xilinx ISE三、实验内容: 设计一个8位移位寄存器。各个D触发器模块采用VHDL语言编写,分别用原理图、VH
22、DL语言元件例化语句和生成语句的方法实现8位移位寄存器的设计。四、实验步骤:(一)、在原理图中调用VHDL生成的D触发器模块实现8位移位寄存器的设计 1、在xilinx ISE环境中新建vhdl文本编辑文件,设计带清零端的D触发器并编译仿真。 2、将步骤1所设计的D触发器生成一个元件。3、新建原理图文件,调用步骤2所生成的D触发器元件,在原理图中实现8位移位寄存器。(二)、用VHDL的COMPONENT语句调用VHDL生成的D触发器模块实现8位异步计数器设计。 1、在xilinx ISE环境中新建vhdl文本编辑文件,设计带清零端的D触发器并编译仿真。2、在同一个程序中用COMPONENT语句
23、实现8位移位寄存器的设计。D触发器参考源程序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 Dchu
24、 is Port ( CLK : in STD_LOGIC; D : in STD_LOGIC; Q : out STD_LOGIC; CLEAR : in STD_LOGIC; Q_N : out STD_LOGIC);end Dchu;ARCHITECTURE BEH OF Dchu ISSIGNAL Q1:STD_LOGIC;BEGINPROCESS (CLEAR,CLK,Q1) BEGIN IF CLEAR='0' THEN Q1<='0' ELSIF CLK'EVENT AND CLK='1'THEN Q1<=D;
25、END IF;END PROCESS;Q<=Q1;Q_N<=not Q1; END BEH;新建原理图文件,调用步骤1所生成的D触发器元件,在原理图中实现8位异步计数器:原理图连接:(2) 元件例化语句调用D触发器模块实现8位移位寄存器参考源程序library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity yiwei8 is Port ( CLK : in STD_LOGIC; d : in STD_LOGIC; q : out STD_LOGIC; CLEAR : in STD_LOGIC; q_n : out STD_LOGIC);end yi
26、wei8;ARCHITECTURE BEH OF yiwei8 IScomponent Dchuport(D,CLK,CLEAR:in STD_LOGIC;Q,Q_N:out STD_LOGIC);end component;signal n:STD_LOGIC_vector(8 downto 0);beginn(0)<=d;u1:Dchu port map(n(0),CLK,CLEAR,n(1);u2:Dchu port map(n(1),CLK,CLEAR,n(2);u3:Dchu port map(n(2),CLK,CLEAR,n(3);u4:Dchu port map(n(3),
27、CLK,CLEAR,n(4);u5:Dchu port map(n(4),CLK,CLEAR,n(5);u6:Dchu port map(n(5),CLK,CLEAR,n(6);u7:Dchu port map(n(6),CLK,CLEAR,n(7);u8:Dchu port map(n(7),CLK,CLEAR,n(8);q<=n(8);q_n<=not n(8);end BEH;5、 实验结果(仿真结果)与分析波形仿真:由波形文件可以看出,输入信号在随着时钟信号向右移,每一个时钟信号上升沿来临时,输入波形右移一位,共移8位。专用集成电路实验报告班 级 :13050Z01 组 长
28、 : 潘恩高-报时模块、整合调试小组成员 : 翟翔宇-显示模块 王 娜-时分秒模块 闫科霖-调时模块实验五 综合实验实验性质:综合性 实验级别: 开课单位:信息与通信工程学院通信工程系 学时:4学时一、实验目的:1、学习用VHDL语言实现比较大型的电路的方法。 2、继续巩固cpld技术层次化设计方法。二、实验器材:计算机、Quartus II软件或xilinx ISE三、实验内容:设计一数字时钟,要求具有时、分、秒、计数显示功能,以24小时循环计时;具有清零,调节小时,分钟功能;具有整点报时功能。四、实验步骤:1、根据电路特点,用层次设计的概念,将此任务分成若干模块,规定每一模块的功能和各模块
29、之间的接口。让几个学生分作和调试其中之一,然后再将各模块合起来联试。以培养学生之间的合作精神,同时加深层次化设计概念。2、了解软件的元件管理深层含义,以及模块元件之间的连接概念,对于不同目录下的同一设计,如何融合。3、模块说明: 各种进制的计数及时钟控制模块(10进制、6进制、24进制) 扫描分时显示,译码模块 各模块都用VHDL语言编写4、各模块源程序 【1】(1)秒模块LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY second ISPORT(clk, reset: INSTD_
30、LOGIC;enmin : OUTSTD_LOGIC;daout: out std_logic_vector (6 downto 0);END entity second;ARCHITECTURE fun OF second ISSIGNAL count: STD_LOGIC_VECTOR( 6 downto 0);BEGIN daout <= count; process ( clk , reset ) begin - enmin<=k; if (reset='0') then count <= "0000000" elsif (clk
31、'event and clk='1') then if (count(3 downto 0)="1001") then if (count <16#60#) then if (count="1011001") then enmin<='1' count<="0000000" ELSE count<=count+7; end if; else count<="0000000" end if; elsif (count < 16#60#) th
32、en count <= count+1; enmin<='0' after 100 ns; else count<="0000000" end if; end if; end process;END fun;(2)分钟模块LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY minute ISPORT(clk, reset : INSTD_LOGIC;enhour : OUTSTD_LOGIC;daout: out std_logic_
33、vector (6 downto 0);END entity minute;ARCHITECTURE fun OF minute ISSIGNAL count: STD_LOGIC_VECTOR( 6 downto 0);BEGIN daout <= count; process ( clk , reset ) begin if (reset='0') then count <= "0000000" elsif (clk 'event and clk='1') then if (count(3 downto 0)=&quo
34、t;1001") then if (count <16#60#) then if (count="1011001") then enhour<='1' count<="0000000" ELSE count<=count+7; end if; else count<="0000000" end if; elsif (count < 16#60#) then count <= count+1; enhour<='0' after 100 ns; e
35、lse count<="0000000" end if; end if; end process;END fun;(3)小时模块LIBRARY IEEE;use IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY hour IS PORT(clk,reset:IN STD_LOGIC; daout:out STD_LOGIC_VECTOR(6 DOWNTO 0);END ENTITY hour;ARCHITECTURE fun OF hour ISSIGNAL count:STD_LOGIC_V
36、ECTOR(6 DOWNTO 0); BEGIN daout<=count; PROCESS(clk,reset) BEGIN IF(reset='0')THEN count<="0000000" -若reset=0,则异步清零 ELSIF(clk'event and clk='1')THEN - 否则,若clk上升沿到 IF(count(3 DOWNTO 0)="1001")THEN -若个位计时恰好到“1001”即9 IF(count<16#23#)THEN -23进制 count<=c
37、ount+7; -若到23D则 else count<="0000000" - 复0 END IF; ELSIF (count<16#23#)THEN -若未到23D,则count进1 count<=count+1; ELSE -否则清零 count<="0000000" END IF; -END IF(count(3 DOWNTO 0)=“1001”) END IF; -END IF(reset=0) END PROCESS;END fun;【2】调时模块library ieee;use ieee.std_logic_1164.
38、all;use ieee.std_logic_unsigned.all;entity self1 isport(c:in std_logic;ok2:in std_logic;ok3:in std_logic;ck:out std_logic;speakc:out std_logic);end ;-设置端口architecture bea of self1 isbeginp1:process(ok2,ok3,c) -ok2和ok3触发进程beginif ok2='1' -由ok2 的动作产生m的电平信号then ck<=ok3;-把按键ok3的脉冲信号给输出speakc&
39、lt;='1' else ck<=c;-否则把正常计数时钟给输出speakc<='0' end if;end process p1;-结束进程end bea;【3】整点报时模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity speaker is port(clk:in std_logic; speakc1:in std_logic; dains:in std_logic_vector(6 downto 0); dainm:in std_lo
40、gic_vector(6 downto 0); speak:out std_logic);end entity speaker;architecture fun of speaker isbeginprocess(clk,dains,dainm)begin if(clk 'event and clk='1')then if(dains="0000000" and dainm="0000000" and speakc1='0')then speak<='1' elsespeak<='
41、;0' end if; end if;end process;end fun;【4】显示模块(1) 分秒显示 LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY secondxs ISPORT(clk : IN STD_LOGIC;input : in std_logic_vector(6 downto 0);sec_out1: out std_logic_vector (6 downto 0);sec_out2: out std_logic_vector (6 downto 0
42、);END entity secondxs;ARCHITECTURE fun OF secondxs ISSIGNAL count1: STD_LOGIC_VECTOR( 3 downto 0);-geweisignal count2: std_logic_vector(2 downto 0);-fen,miao shiweiBEGINprocess(clk)begincount1<=input(3 downto 0);count2<=input(6 downto 4);if(clk 'event and clk='1') thencase count1 i
43、swhen "0000" =>sec_out1<="0111111"-0when "0001" =>sec_out1<="0000110"-1when "0010" =>sec_out1<="1011011"-2when "0011" =>sec_out1<="1001111"-3when "0100" =>sec_out1<="1100110&q
44、uot;-4when "0101" =>sec_out1<="1101101"-5when "0110" =>sec_out1<="1111101"-6when "0111" =>sec_out1<="0000111"-7when "1000" =>sec_out1<="1111111"-8when "1001" =>sec_out1<="1101
45、111"-9when others=>sec_out1<="0111111"end case;case count2 iswhen "000" =>sec_out2<="0111111"-0when "001" =>sec_out2<="0000110"-1when "010" =>sec_out2<="1011011"-2when "011" =>sec_out2<
46、="1001111"-3when "100" =>sec_out2<="1100110"-4when "101" =>sec_out2<="1101101"-5when others=>sec_out2<="0111111"end case;end if;end process;end fun;(2) 小时显示LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsign
47、ed.all;ENTITY hourxs ISPORT(clk : IN STD_LOGIC;input : in std_logic_vector(6 downto 0);hour_out1: out std_logic_vector (6 downto 0);hour_out2: out std_logic_vector (6 downto 0);END entity hourxs;ARCHITECTURE fun OF hourxs ISSIGNAL count1: STD_LOGIC_VECTOR( 3 downto 0);signal count2: std_logic_vector
48、(2 downto 0);BEGINprocess(clk)begincount1<=input(3 downto 0);count2<=input(6 downto 4);if(clk'event and clk='1') thencase count1 iswhen "0000" =>hour_out1<="0111111"-0when "0001" =>hour_out1<="0000110"-1when "0010" =>hour_out1<="1011011"-2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论