组合逻辑电路的VHDL设计

合集下载

实验四 用VHDL设计组合电路教案

实验四  用VHDL设计组合电路教案

实验四 用VHDL 设计组合电路教案一、 实验目的1 熟悉使用VHDL 进行简单组合电路的设计;2 熟悉使用VHDL 进行简单层次电路的设计;2 熟悉使用VHDL 文本输入法设计PLD 芯片的流程;二、 实验内容用VHDL 语言完成3—8线译码器设计;三、实验原理二进制译码器的输入是一组二进制代码,输出是一组与输入代码一一对应的高、低电平信号。

某三位二进制译码器的真值表及示意图如下:三、实验步骤及要求1、请根据以上图原理图,编写一个3—8译码器的VHDL 源程序。

(只考虑三个输入A2A1A0和8个输出y7y6y5y4y3y2y1y0 ,不考虑它的使能控制输入端)。

2、 对DEC3_8.vhd 文件编译后,再进行波形仿真,完成输入信号A 、Y 输入的设置,启动仿真器Simulator ,观察输出波形的情况。

3、 锁定引脚、编译并编程下载。

参选实验电路模式5和附表一,键1、键2、键3为输入信号A0、A1、A2分别锁定在EP1K30/50144-PIN TQFP目标芯片的输入引脚,输出信(b)A A A S AB S CS (a)号y7、y6、y5、y4、y3、y2、y1、y0分别锁定在目标芯片的输出引脚上。

4、硬件实测3—8线译码器的逻辑功能。

按动GW48实验板上的高低电平输入键1、键2、键3,得到不同的A0、A1、A2输入组合;观察输出发光二极管Di的亮灭,检查3—8线译码器的设计结果是否正确。

思考题如果有一个模6计数器采用约翰逊尾变码编码。

其顺序为:000->001-> 011 ->111 ->110 ->100->000试设计一个由时钟CLK触发,复位控制端RESET=0进行复位操作的模6计数器。

实验报告要求:写出实验源程序,画出仿真波形。

分析实验结果,以及它们的硬件测试实验结果写进实验报告。

写出心得体会。

重点内容是分析原理图,写出对应的VHDL代码对思考题注意加入时钟和复位控制信号,注意其相关语法现象。

VHDL数字逻辑电路设计19例

VHDL数字逻辑电路设计19例

VHDL 数字逻辑电路设计19例第1章组合逻辑电路8例1. 2-4译码器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ymq24 ISPORT (EN,A,B:IN STD_LOGIC;YN : OUT STD_LOGIC_vector(3 downto 0 ));END ENTITY ymq24 ;ARCHITECTURE rt1 OF ymq24 ISSIGNAL T:STD_LOGIC_vector(1 downto 0 );BEGINT<=A & B;process(EN,T)beginIF EN='1' THEN YN<="1111";ELSIF T="00" THEN YN<="1110";ELSIF T="01" THEN YN<="1101";ELSIF T="10" THEN YN<="1011";ELSE YN<="0111";END IF;End process;END ARCHITECTURE rt1;2. 3-8译码器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ymq38 ISPORT (G1,G2N,G3N,A,B,C:IN STD_LOGIC;YN : OUT STD_LOGIC_vector(7 downto 0 )); END ENTITY ymq38 ;ARCHITECTURE rt1 OF ymq38 ISSIGNAL T1,T2:STD_LOGIC_vector(2 downto 0 );BEGINT1<=A & B & C;T2<=G1 & G2N & G3N;process(G1,G2N,G3N,T1,T2)beginIF T2/="100" THEN YN<="11111111";ELSIF T1="000" THEN YN<="11111110";ELSIF T1="001" THEN YN<="11111101";ELSIF T1="010" THEN YN<="11111011";ELSIF T1="011" THEN YN<="11110111";ELSIF T1="100" THEN YN<="11101111";ELSIF T1="101" THEN YN<="11011111";ELSIF T1="110" THEN YN<="10111111";ELSE YN<="01111111";END IF;End process;END ARCHITECTURE rt1;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY xzq41 ISPORT(gn: IN STD_LOGIC;d: IN STD_LOGIC_VECTOR(3 DOWNTO 0);a0,a1: IN STD_LOGIC;y: out STD_LOGIC);END ENTITY xzq41;ARCHITECTURE rt1 OF xzq41 ISsignal s: STD_LOGIC_VECTOR(1 DOWNTO 0); BEGINS<= a1 & a0;Process(S,D,gn)beginif gn='0' thenCASE (S) ISWHEN "00"=> Y<=d(0);WHEN "01"=> Y<=d(1);WHEN "10"=> Y<=d(2);WHEN "11"=> Y<=d(3);WHEN OTHERS =>NULL;END CASE;else y<='0';end if;End process;END ARCHITECTURE rt1;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY xzq81 ISPORT(gn: IN STD_LOGIC;d: IN STD_LOGIC_VECTOR(7 DOWNTO 0);a0,a1,a2: IN STD_LOGIC;y: out STD_LOGIC);END ENTITY xzq81;ARCHITECTURE rt1 OF xzq81 ISsignal s: STD_LOGIC_VECTOR(2 DOWNTO 0); BEGINS<= a2 & a1 & a0;Process(S,D,gn)beginif gn='0' thenCASE (S) ISWHEN "000"=> Y<=d(0);WHEN "001"=> Y<=d(1);WHEN "010"=> Y<=d(2);WHEN "011"=> Y<=d(3);WHEN "100"=> Y<=d(4);WHEN "101"=> Y<=d(5);WHEN "110"=> Y<=d(6);WHEN "111"=> Y<=d(7);WHEN OTHERS =>NULL;END CASE;else y<='0';end if;End process;END ARCHITECTURE rt1;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY l75 ISPORT (A,B,C:IN STD_LOGIC;d,g : OUT STD_LOGIC);END ENTITY l75 ;ARCHITECTURE rt1 OF l75 ISCOMPONENT ymq38PORT (G1, G2N, G3N, A, B, C: IN STD_LOGIC;YN : OUT STD_LOGIC_vector(7 downto 0 )); END COMPONENT ;signal ynt : STD_LOGIC_vector(7 downto 0 );BEGINU1 :ymq38 PORT MAP ('1','0','0',a,b,c,YNt(7 DOWNTO 0));d<=not(ynt(1) and ynt(2) and ynt(4) and ynt(7));g<=not(ynt(1) and ynt(2) and ynt(3) and ynt(7));END ARCHITECTURE rt1;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY l76 ISPORT (A,B,C,D:IN STD_LOGIC;F : OUT STD_LOGIC);END ENTITY l76 ;ARCHITECTURE rt1 OF l76 ISCOMPONENT ymq38PORT (G1,G2N,G3N,A,B,C:IN STD_LOGIC;YN : OUT STD_LOGIC_vector(7 downto 0 ));END COMPONENT ;signal yn1t:STD_LOGIC_vector(7 downto 0 );signal yn2t:STD_LOGIC_vector(7 downto 0 );BEGINU1 :ymq38 PORT MAP ('1',A,'0',B,C,D,YN1t(7 DOWNTO 0));U2 :ymq38 PORT MAP (A,'0','0',B,C,D,YN2t(7 DOWNTO 0));F<=not( yn1t(2) and yn1t(4) and yn1t(6) and yn2t(0) and yn2t(2) and yn2t(4) and yn2t(6)); END ARCHITECTURE rt1;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY l78 ISPORT (A,B,C:IN STD_LOGIC;f : OUT STD_LOGIC);END ENTITY l78 ;ARCHITECTURE rt1 OF l78 ISCOMPONENT xzq81PORT(gn: IN STD_LOGIC;d: IN STD_LOGIC_VECTOR(7 DOWNTO 0);a0,a1,a2: IN STD_LOGIC;y: out STD_LOGIC);END COMPONENT ;BEGINU1 :xzq81 PORT MAP ('0',"01101100",c,b,a,f);END ARCHITECTURE rt1;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY l78 ISPORT (A,B,C:IN STD_LOGIC;f : OUT STD_LOGIC);END ENTITY l78 ;ARCHITECTURE rt1 OF l78 ISCOMPONENT xzq41PORT(gn: IN STD_LOGIC;d: IN STD_LOGIC_VECTOR(3 DOWNTO 0);a0,a1: IN STD_LOGIC;y: out STD_LOGIC);END COMPONENT ;signal t:STD_LOGIC;signal dt:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINt<= not c;dt<=t & c & '1' & '0';U1 :xzq41 PORT MAP ('0',dt,b,a,f);【作业】以下所有题目必须用VHDL代码实现。

实验一组合逻辑电路的VHDL设计

实验一组合逻辑电路的VHDL设计

实验⼀组合逻辑电路的VHDL设计组合逻辑电路的VHDL设计学院及班级:学号:姓名:完成时间:(1)实验⽬的:熟悉QuartusⅡ的VHDL⽂本设计流程全过程,学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。

(2)实验内容1:⽤VHDL语⾔设计2选1多路选择器。

提⽰:参考例3-1。

要求:⾸先利⽤QuartusⅡ完成2选1多路选择器的⽂本编辑输⼊和编译、仿真测试等步骤,给出时序仿真波形。

选择⽬标器件EP1C3,建议选实验电路模式5,如附图1所⽰。

⽤键1(PIO0,引脚号为1)控制s;a和b分别接clock0(引脚号为93)和clock2(引脚号为17);输出信号y接扬声器speaker(引脚号为129)。

通过短路帽选择clock0接256Hz信号,clock2接8Hz信号。

引脚锁定后进⾏编译、下载和硬件测试实验,通过键1控制s,可使扬声器输出不同⾳调。

(3)实验内容2:将此⼆选⼀多路选择器看成是⼀个元件mux21a,利⽤元件例化语句描述图2所⽰电路,并将此⽂件放在同⼀⽬录中。

图2 双2选1多路选择器要求:⾸先利⽤QuartusⅡ完成2选1多路选择器的⽂本编辑输⼊和编译、仿真测试等步骤,给出时序仿真波形。

然后进⾏引脚锁定以及硬件下载测试。

选择⽬标器件EP1C3,建议选实验电路模式5(附图1),⽤键1(PIO0,引脚号为1)控制s0;⽤键2(PIO1,引脚号为2)控制s1;a3、a2和a1分别接clock5(引脚号为16)、clock0(引脚号为93)和clock2(引脚号为17);输出信号outy仍接扬声器spker(引脚号为129)。

通过短路帽选择clock0接256Hz信号,clock5接1024Hz,clock2接8Hz信号。

通过选择键1、键2,控制s0、s1,可使扬声器输出不同⾳调。

(4)程序设计程序⽰例1:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;entity mux21a isport(a,b,s:in std_logic;y:out std_logic);end entity mux21a;architecture one of mux21a isbeginPROCESS(s,a,b)BEGINCASE S ISWHEN '0' => y <= a;WHEN '1' => y <= b;WHEN OTHERS =>NULL ;END CASE;END PROCESS;end architecture one;程序⽰例2:library ieee;use ieee.std_logic_1164.all;entity muxk isport(a1,a2,a3,s0,s1:in std_logic;outy: out std_logic);end entity muxk;architecture one of muxk issignal tmp: std_logic;component mux21aport(a,b,s: in std_logic;y:out std_logic);end component;beginu1: mux21a port map(a=>a2,b=>a3,s=>s0,y=>tmp);u2: mux21a port map(a=>a1,b=>tmp,s=>s1,y=>outy);end architecture one;(5)实验过程打开软件,点击新建建⽴⼀个VHDL FILE,将编写好的程序拷进去点击保存根据提⽰新建⼀个以实体名为名的⼯程并选择芯⽚,程序名也与实体名⼀致。

07 第七章 使用VHDL语言来设计组合逻辑电路

07 第七章 使用VHDL语言来设计组合逻辑电路
与非门的真值表如下:
第七章 使用VHDL语言来设计组合逻辑电路
7.2.5 异或门设计
异或门是用于实现异或逻辑的电路,其逻 辑表达式如下:
异或门的真值表如下:
第七章 使用VHDL语言来设计组合逻辑电路
7.2.6 三态门设计
三态门的输出既可以是一般二值逻辑电路 的正常的“0”状态和“1”状态,又可以保持 特有的高阻抗(Z)状态 ,其真值表如下:
第七章 使用VHDL语言来设计组合逻辑电路
7.1 组合逻辑电路设计基础 7.2 组合逻辑的基本电路设计 7.3 译码器设计 7.4 编码器设计 7.5 数据选择器设计 7.6 比较器设计 7.7 加法器设计 7.8 减法器设计 7.9 乘法器设计 7.10 奇偶检验电路设计 7.11 其他逻辑电路设计
多位加法器可以分为并行进位和串行进位两种。
第七章 使用VHDL语言来设计组合逻辑电路
7.8 减法器设计
减法器用于实现两个二进制的数减法的组 合逻辑。最简单的全减器是采用本位结果 和借位来显示,二进制中是借一当二,所 以可以使用两个输出变量的高低电平变化 来实现减法运算。
在实际应用中,可以使用“三-八”译码器 来实现全减器。
逻辑代数中,最基本的逻辑运算是“与”、 “或”、“非”三种。
第七章 使用VHDL语言来设计组合逻辑电路
7.1.2 逻辑函数的表示方法
逻辑函数(logical function)是数字电路的 特点及描述工具,其输入、输出量是高、 低电平,可以用二元常量(0,1)来表示, 输入量和输出量之间的关系是一种逻辑上 的因果关系,数字电路可以用逻辑函数的 的数学工具来描述。逻辑函数的表示方法 有多种:如逻辑表达式、真值表、逻辑图、 波形图等。

基于CPLD组合逻辑电路的VHDL实现

基于CPLD组合逻辑电路的VHDL实现

其它端口
I /O 区 0X08000 ̄ 0X0FFFF。
另外,还有其它的 I/O 控制逻辑、软硬件复位等系统需求。
2.2 硬件设计
系统控制电路的逻辑框图(不含数据和地址总线)如图 2- 1 所示。
收稿日期:2006-07-29
·66·
北京电子科技学院学报
2006年
在 本 系 统 中 ,CPU 采 用 DSP
对 PCI、网卡、键盘等的状态端口 读取仿真结果也均正确。
2)产生各接口需要的控制信 号的仿真:如对总线进行地址为 0x8000 的 写 操 作 , 写 入 数 据 为
图 2- 3 I/O 控制仿真波形
0x55 后,USB 的几个控制信号线输出状态均正确,写入数据为 0xaa 后,USB 的几个控制信号线状态与写入数据为 0x55 时正 好相反,这说明对 USB 的控制信号线操作是正确的。
第 14 卷 第 4 期 Vol.14 No.4
北京电子科技学院学报 Journal of Beijing Electronic Science and Technology Institute
2006 年 12 月 Dec. 2006
基于 CP LD 组合逻辑电路的 VHDL 实现
李新红 1 李凤华 2,1 丛 文 1 (1 . 西安电子科技大学计算机学院,陕西西安 71 0071 ; 2. 北京电子科技学院,北京 1 00070)
摘 要:本文介绍了基于 C PLD 组合逻辑电路的 V H D L 设计思想,并结合嵌入式教学系统的译码和 I/O
控制电路的具体应用,做了较为详细的例证,其中包含部分代码。
关键词: C PLD ;组合逻辑电路;V H D L;实现
中图分类号:TN791

实验二-组合逻辑电路VHDL实现

实验二-组合逻辑电路VHDL实现

实验二组合逻辑电路的VHDL实现一、实验目的掌握使用VHDL语言进行时序逻辑电路设计的方法。

二、实验设备及器件IBM PC机一台三、实验内容(1)用VHDL 语言设计一个D触发器,对程序进行编译和仿真,并记录仿真波形。

提示:D触发器的符号如右图所示,当时钟信号输入端CLK接收到上升沿信号时,输入端D的信号被传送到输出端Q输出,否则输出端Q维持原来的状态不变。

实验代码:D触发器LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY DFF1 ISPORT (CLK : IN STD_LOGIC ;D : IN STD_LOGIC ;Q : OUT STD_LOGIC );END ;ARCHITECTURE bhv OF DFF1 ISSIGNAL Q1 : STD_LOGIC ; --类似于在芯片内部定义一个数据的暂存节点BEGINPROCESS (CLK)BEGINIF CLK'EVENT AND CLK = '1'THEN Q1 <= D ;END IF;Q <= Q1 ; --将内部的暂存数据向端口输出END PROCESS ;END bhv;(2)用VHDL语言设计一个十进制加法计数器,对程序进行编译和仿真,并记录仿真波形。

提示:十进制加法计数器的电路如下图所示,在时钟信号的驱动下,计数器进行累加,每次加1,其输出状态由0000变化到1001,加满回零。

当复位输入端reset为低电平时,计数器复位,输出状态回到0000。

十进制加法计数器电路图实验代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY jsq10 ISPORT(CLK,RESET:IN STD_LOGIC;Q:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END jsq10;ARCHITECTURE ONE OF jsq10 ISBEGINPROCESS(CLK,RESET)BEGINIF(RESET='0') THEN Q<="0000";ELSIF(CLK' EVENT AND CLK='1') THENQ<="0000";ELSEQ<=Q+1;END IF;END IF;END PROCESS;END ONE;(3)用VHDL语言设计一个电平锁存器,对程序进行编译和仿真,并记录仿真波形。

vhdl 组合逻辑电路

vhdl 组合逻辑电路

vhdl 组合逻辑电路VHDL组合逻辑电路VHDL(VHSIC Hardware Description Language)是一种硬件描述语言,用于描述数字电路和系统级电路的行为和结构。

VHDL可以用于设计、仿真和验证电子系统。

在数字电路设计中,组合逻辑电路是一种重要的电路类型,本文将重点介绍VHDL中的组合逻辑电路。

一、组合逻辑电路简介组合逻辑电路是由输入端、输出端和逻辑门构成的电路。

它的输出仅取决于当前的输入,而与过去的输入无关。

组合逻辑电路的主要特点是没有存储元件,也就是说输出只与输入有关,不受时间的影响。

二、VHDL语言描述组合逻辑电路1. 实体声明在VHDL中,组合逻辑电路可以通过实体声明来描述。

实体声明包括实体头和实体体两部分。

实体头部分定义了实体名称、输入端口和输出端口,并且可以定义参数和模式等信息。

例如:实体名称:AND2输入端口:A, B输出端口:Y实体体部分定义了实体的行为,使用逻辑表达式来描述输出与输入之间的关系。

例如:实体体部分:Y <= A AND B;2. 架构声明架构声明用于描述实体的具体实现。

在架构声明中,可以使用信号、变量、常数、函数等来描述电路的行为。

例如:架构声明:架构 Behavioral of AND2 is开始信号 temp: bit;开始temp <= A AND B;Y <= temp;结束 Behavioral;三、VHDL组合逻辑电路的应用举例1. 与门(AND)与门是最基本的逻辑门之一,它的输出为输入信号的逻辑与运算结果。

在VHDL中,可以通过以下代码来实现一个2输入与门:实体声明:实体名称:AND2输入端口:A, B输出端口:Y实体体部分:Y <= A AND B;2. 或门(OR)或门是另一种基本的逻辑门,它的输出为输入信号的逻辑或运算结果。

在VHDL中,可以通过以下代码来实现一个2输入或门:实体声明:实体名称:OR2输入端口:A, B输出端口:Y实体体部分:Y <= A OR B;3. 非门(NOT)非门是最简单的逻辑门,它的输出为输入信号的逻辑非运算结果。

第3章-3 VHDL基本逻辑电路设计

第3章-3 VHDL基本逻辑电路设计

Y:OUT BIT_VECTOR (7 DOWNTO 0));
END ENTITY DECODER;
第3章
VHDL 编程基础
方法1:使用SLL逻辑运算符 ARCHITECTURE ART1 OF DECODER IS SIGNAL SR:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN
ELSIF (SEL="11") THEN Y<=X(2);
ELSE Y<=X(3); END IF;
END PROCESS;
END ARDL 编程基础
【例3.68】4选1数据选择器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MUXB41 IS PORT (DATA0,DATA1:IN STD_LOGIC_VECTOR(3 DOWNTO 0); DATA2,DATA3:IN STD_LOGIC_VECTOR(3 DOWNTO 0); A,B;IN STD_LOGIC; Y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END ENTITY MUXB41;
第3章
VHDL 编程基础
ARCHITECTURE ART OF MUX41 IS SIGNAL SEL :STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN SEL<=B&A; PROCESS(X,SEL) IS
BEGIN
IF(SEL="00") THEN Y<=X(0); ELSIF (SEL="01") THEN Y<=X(1);
第3章
VHDL 编程基础
ARCHITECTURE ART OF TRISTATE IS
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

组合逻辑电路的VHDL设计
学院及班级:信工院电子信息工程一班
学号: 2010550428
姓名:王尧
完成时间: 2012年10月11日
(1)实验目的:
熟悉QuartusⅡ的VHDL文本设计流程全过程,学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。

(2)实验内容1:用VHDL语言设计2选1多路选择器。

提示:参考例3-1。

要求:首先利用QuartusⅡ完成2选1多路选择器的文本编辑输入和编译、仿真测试等步骤,给出时序仿真波形。

选择目标器件EP1C3,建议选实验电路模式5,如附图1所示。

用键1(PIO0,引脚号为1)控制s;a和b分别接clock0(引脚号为93)和clock2(引脚号为17);输出信号y接扬声器speaker(引脚号为129)。

通过短路帽选择clock0接256Hz信号,clock2接8Hz信号。

引脚锁定后进行编译、下载和硬件测试实验,通过键1控制s,可使扬声器输出不同音调。

(3)实验内容2:将此二选一多路选择器看成是一个元件mux21a,利用元件例
化语句描述图2所示电路,并将此文件放在同一目录中。

图2 双2选1多路选择器
要求:首先利用QuartusⅡ完成2选1多路选择器的文本编辑输入和编译、仿真测试等步骤,给出时序仿真波形。

然后进行引脚锁定以及硬件下载测试。

选择目标器件EP1C3,建议选实验电路模式5(附图1),用键1(PIO0,引脚号为1)控制s0;用键2(PIO1,引脚号为2)控制s1;a3、a2和a1分别接clock5(引脚号为16)、clock0(引脚号为93)和clock2(引脚号为17);输出信号outy仍接扬声器spker(引脚号为129)。

通过短路帽选择clock0接256Hz信号,clock5接1024Hz,clock2接8Hz信号。

通过选择键1、键2,控制s0、s1,可使扬声器输出不同音调。

(4)程序设计
程序示例1:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
entity mux21a is
port(a,b,s:in std_logic;
y:out std_logic);
end entity mux21a;
architecture one of mux21a is
begin
PROCESS(s,a,b)
BEGIN
CASE S IS
WHEN '0' => y <= a;
WHEN '1' => y <= b;
WHEN OTHERS =>NULL ;
END CASE;
END PROCESS;
end architecture one;
程序示例2:
library ieee;
use ieee.std_logic_1164.all;
entity muxk is
port(a1,a2,a3,s0,s1:in std_logic;
outy: out std_logic);
end entity muxk;
architecture one of muxk is
signal tmp: std_logic;
component mux21a
port(a,b,s: in std_logic;
y:out std_logic);
end component;
begin
u1: mux21a port map(a=>a2,b=>a3,s=>s0,y=>tmp);
u2: mux21a port map(a=>a1,b=>tmp,s=>s1,y=>outy);
end architecture one;
(5)实验过程
打开软件,点击新建建立一个VHDL FILE,将编写好的程序拷进去点击保存根据提示新建一个以实体名为名的工程并选择芯片,程序名也与实体名一致。

编译前设置完成后点击START COMPILATION对程序进行编译检错,然后点击新建建立一个VECTOR WAVEFORM FILE,在EDIT下拉菜单里点END TIME设定仿真结束时间,在VIEW\UTILITY WINDOWS下拉菜单里点击NODE FINDER弹出窗口里点击LIST 列出所有端口。

分别将端口移到WAVEFORM1.vwf窗口左边name下,然后分别编辑各输入端口的输入信号。

然后以实体名保存,点击start simulation进行仿真检错。

然后进行引脚锁定和下载:选择ASSIGNMENTS\ASSIGNMENT EDITOR命令,在CATEGORY列表中选择locations;双击To栏的《new》选择电路设计图中的端口,双击location栏的《new》选择外设引脚;储存引脚锁定信息并再编译一次。

选择Toos\Programmer命令,在Mode下拉列表中选择编程模式,并选中下载文件右侧的第一个小方框,单击左上角的Hardware Setup设置编程器。

向FPGA 下载SOF文件前要选择打钩“PROGRAM/CONFIGURE”选项。

然后单击下载标符START 按钮进行下载。

下载完成后按要求进行硬件测试。

(6)仿真波形图
(7)实验分析与总结
1、实验一要注意好内部逻辑与时序,注意端口属性是输入还是输出等,仿真时间
可以适当延长(40-50ns),使观察效果明显,另外,在检验最后的结果是否与要求匹配时,可以按照时序仿真图来观察.
2、实验二的过程中,一度遇到编译报错的问题,后面经检验发现程序的内部架构不完整,顶层文件与子文件的调用关系不明朗,子函数中逻辑缺失,程序不完整,因此在之后的大型程序编写中,要注意先建好程序的内部联系,使逻辑清晰.各种程序调用关系要清楚,不能混淆。

相关文档
最新文档