组合逻辑电路的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例第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设计学院及班级:学号:姓名:完成时间:(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语言来设计组合逻辑电路

第七章 使用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实现

其它端口
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语言进行时序逻辑电路设计的方法。
二、实验设备及器件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(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基本逻辑电路设计

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
实验2组合逻辑电路的VHDL设计

实验二 组合逻辑电路的VHDL 设计一、实验目的与要求 1、目的(1)熟悉VHDL 语言的基本结构(2)掌握用VHDL 语言实现组合逻辑功能器件的逻辑功能的一般方法。
2、要求(1)调试程序要记录调试过程中出现的问题及解决办法; (2)给出每个问题的算法或画出流程图;(3)编写程序要规范、正确,上机调试过程和结果要有记录,并注意调试程序集成环境的掌握及应用,不断积累编程及调试经验; (4)做完实验后给出本实验的实验报告。
二、实验设备、环境PII 以上计算机,装有QuartusII 软件 三、方法与步骤(一)教师简单回顾所需知识并演示较一个简单功能的实现过程。
1、 简单回顾组合逻辑电路的特点及常用逻辑功能器件的功能 2、 回顾QuartusII 的VHDL 操作步骤3、 以4选1数据选择器为例,重点演示该组合逻辑单元的VHDL 设计过程。
(1)4选1数据选择器的真值表与电路符号(2)4选1数据选择器的参考VHDL 程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux41 ISPORT(S :IN STD_LOGIC_VECTOR (1 DOWNTO 0); A,B,C,D : IN STD_LOGIC; Y :OUT STD_LOGIC );地址输入输出S0 S1 0 0 A 0 1 B 1 0 C 11DS[1..0]A B C DYMULTI_4VA B C DS[1..0]YEND mux41;ARCHITECTURE a OF mux41 ISBEGINPROCESS (s,A,B,C,D)BEGINIF (S="00") THENY <= A;ELSIF (S="01") THENY <= B;ELSIF (S="10") THENY <= C;ELSIF (S="11") THENY <= D;END IF;END PROCESS;END a;四、实验过程、内容、数据处理及分析按照设计选题编写简单程序1、可供选择进行设计的组合逻辑电路如下,要求规定课时内至少完成3种逻辑电路的设计。
3组合电路的VHDL设计

IEEE库——VHDL的标准库的扩展。
– std_logic_1164程序包:定义了多值逻辑类型及相关函数 – 例,如果要使用STD_LOGIC数据类型,则必须在程序中包含 IEEE库和STD_LOGIC_1164 程序包。 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164 . ALL ;
end process [进程标号] ;
进程语句的执行
– 当敏感信号列表中的任一信号发生变化时,就启动进程语句, 执行进程语句中包含的顺序语句; – 执行完毕后,返回进程语句的起始端,进入等待状态,直到下 一次敏感列表中的某个信号发生变化。
3.1 多路选择器及其VHDL描述
在一个结构体中可包含多个进程语句,进程语句之间是 并行关系,而进程内部的语句是顺序执行的。
布尔(boolean )
– type boolean is ( false,true);
– VHDL综合器用一个二进制位表示boolean型变量或信号,可以参 与逻辑运算。
3.1 多路选择器及其VHDL描述
整型(integer)
– type integer is range -2147483647 to 2147483647; ——32位有符号的二进制数 – VHDL综合器要求用RANGE子句限定所定义整数的范围。 – 例,SIGNAL signal1 ﹕ integer RANGE 0 TO 15;
IN:只可对其读。 OUT:只可对其写(赋值)。 INOUT:既可读又可写。 BUFFER:同OUT,同时允许回读该信 号。 注:BUFFER与INOUT相比,BUFFER 回读的信号不是由外部输入的,而是 由内部产生、向外输出的信号。
数字电路设计课件第五讲常用组合、时序逻辑电路的VHDL描述

2020/8/1
2020/8/1
2020/8/1
仿真结果
编码器
• 根据真值表,利用With…Select语句 或Case…When语句或When…Else 语句来设计——查表法
2020/8/1
对应的十进制 0 1 2 3 4 5 6 7 8 9
BCD码的十位 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
BCD码的个位 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001
二进制 对应的十进制 BCD码的十位 BCD码的个位
2020/8/1
2020/8/1
存储器地址译码器设计
EEPROM
FFFF
SRAM
C000
Peripheral Peripheral
PROM Shadow
8000
4010 4008 4000
2020/8/1
LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ;
ENTITY decode IS PORT ( address : IN STD_LOGIC_VECTOR( 15 Downto 0) ; Valid , boot_up : IN STD_LOGIC ; Sram , prom , eeprom , shadow , Periph1 ,periph2 : OUT STD_LOGIC) ; END decode;
异步信号有效异步信号有效qoutqout局部被异步复位其局部被异步复位其他被异步预置他被异步预置异步信号有效异步信号有效qoutqout局部被异步复位其局部被异步复位其他被异步预置他被异步预置同步加载信号同步加载信号同步加载信号同步加载信号endendprocess
实验一-用VHDL语言设计组合逻辑电路

实验一用VHDL语言设计组合逻辑电路一、实验目的:掌握用VHDL语言设计组合逻辑电路的方法。
熟悉QuartusⅡ的操作。
二、实验仪器:PC机一台三、实验内容:1.用VHDL语言设计4选1数据选择器。
2.用文本输入法输入3.建立工程,编译,改错,直至编译通过4.仿真,验证所设计电路的正确性四、操作步骤:1、在所使用的计算机数据盘里建立自己的文件夹2、打开QuartusII3、单击工具栏中的new,在出现的对话框中选择VHDL File,点击OK。
4、输入设计程序。
输入结束后,将程序保存在自己的文件夹中。
注意:存盘的文件名应该跟实体名相同。
5、创建工程。
创建工程有两种方法:第一种方法是在保存文件后出现的对话框中点击‘是’,按提示进行操作;第二种方法是在出现的对话框点击‘否’。
第一种方法的具体过程:点击‘是’,出项下面的框点击‘Next’,出项不需要任何修改,继续点击‘Next’,出项继续点击‘Next’,在后面出现的框图中继续点击‘Next’,直到没有‘Next’选项,点击‘Finish’,这样就完成工程的创建。
第二种方法的具体过程:点击‘否’此时要创建工程,点击菜单File下的“New Preject Wizard”。
出现框图:点击‘Next’,出项点击最上一行右边的,寻找你的文件所在的文件夹,点击要创建工程的文件名,点击打开(或双击要创建工程的文件名),出现项目名称和文件名称相同。
点击‘Next’,出现点击,在出现的对话框点击文件名,点击‘打开’,出现点击右边的‘add’,出现点击‘Next’,在后面出现的框图中继续点击‘Next’,直到没有‘Next’选项,点击‘Finish’,这样就完成工程的创建。
6、观察QUARTUS 界面点击箭头所指图标,观察箭头上方的变化,点击+号,双击出项的文件7、全程编译。
点击箭头所指图标,开始全程编译。
如果有错误,编译会自动停止,出现点击确定,按提示到文件中修改错误,保存文件,继续点击全程编译的图标,如还有错误,继续上面的步骤。
VHDL语言组合逻辑电路设计

元件定 义 元件在 何处?
元件设计应放在同一 目录下
已 知 逻 辑 电 路 设 计 方 法
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY GINV IS PORT(A:IN STD_LOGIC; C:OUT STD_LOGIC); END GINV; ARCHITECTURE dataflow OF GINV IS BEGIN C<=NOT A; END dataflow;
已知逻辑电路设计方法
添加中间信号
L1
L3
L2
L4
已 知 逻 辑 电 路 设 计 方 法
ARCHITECTURE dataflow OF ymq24 IS COMPONENT GINV PORT(A:IN STD_LOGIC; C:OUT STD_LOGIC); END COMPONENT; COMPONENT GNAND2 PORT(A,B:IN STD_LOGIC; C:OUT STD_LOGIC); END COMPONENT; SIGNAL L1,L2,L3,L4:STD_LOGIC; BEGIN U1:GINV PORT MAP(A0,L1); U2:GINV PORT MAP(A1,L2); U3:GINV PORT MAP(L1,L3); U4:GINV PORT MAP(L2,L4); U5:GNAND2 PORT MAP(L1,L2,Y0); U6:GNAND2 PORT MAP(L2,L3,Y1); U7:GNAND2 PORT MAP(L1,L4,Y2); U8:GNAND2 PORT MAP(L3,L4,Y3); END dataflow;
元件设计应放在同一 目录下
已 知 逻 辑 电 路 设 计 方 法
第五章 组合逻辑电路的VHDL语言描述

第5章 组合逻辑电路的VHDL描述
仿真波形
第5章 组合逻辑电路的VHDL描述
5.1.2 2输入或非门
LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ;
NOR2
ENTITY cynor2 IS
PORT ( datain1, datain2 : IN STD_LOGIC ; dataout : OUT STD_LOGIC ) ; END ENTITY cynor2 ; ARCHITECTURE behavioral OF cynor2 IS BEGIN dataout <= datain1 NOR datain2 ; END ARCHITECTURE behavioral ;
第5章 组合逻辑电路的VHDL描述
仿真波形
第5章 组合逻辑电路的VHDL描述
5.1.5 2输入同或门电路
LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY cynxor2 IS PORT ( datain1, datain2 : IN STD_LOGIC ; dataout : OUT STD_LOGIC ) ; END ENTITY cynxor2 ; ARCHITECTURE behavioral OF cynxor2 IS BEGIN
BEGIN
PROCESS ( a, datain ) BEGIN IF ( datain = '1' ) THEN dataout <= '0' ; ELSE dataout <= '1' ; END IF ; END PROCESS ; END ARCHITECTURE behavioral_2 ; --RTL描述方式 ,MAX中需要加入时钟a
VHDL 实验一组合逻辑电路的设计

实验一组合逻辑电路的设计一、实验目的:1.熟悉QuartusⅡ的VHDL文本设计流程全过程,学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。
2.加深FPGA\CPLD设计的过程,并比较原理图输入和文本输入的优劣。
二、实验的硬件要求:1.GW48EDA/SOPC+PK2实验系统。
三、实验内容:1.首先利用QuartusⅡ完成2选1多路选择器(如图S1-1)的文本编辑输入(mux21a.vhd)和仿真测试等步骤。
最后在实验系统上进行硬件测试,验证本项设计的功能。
图S1-12.将此多路选择器看成是一个元件mux21a,利用原理图输出法完成图s1-2,并将此文件放在同一目录中。
图s1-2编译、综合、仿真本例程,并对其仿真波形作出分析说明。
最后在实验系统上进行硬件测试,验证本项设计的功能。
3.以1位二进制全加器为基本元件,用例化语句写出8位并行二进制全加器的顶层文件,编译、综合、仿真本例程,并对其仿真波形作出分析说明。
最后在实验系统上进行硬件测试,验证本项设计的功能。
4.七段数码管译码器(Decoder)七段数码管译码器(Decoder)的输入为4位二进制代码,输出为7个表征七段数码管代码的状态信号。
下面为一个七段数码管译码器的VHDL源代码模型:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY display ISPORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END;ARCHITECTURE ONE OF display ISBEGINPROCESS(A)BEGINCASE A ISWHEN "0000"=>LED7S<="0111111";--X"3F"->0WHEN "0001"=>LED7S<="0000110";--X"06"->1WHEN "0010"=>LED7S<="1011011";--X"5B"->2WHEN "0011"=>LED7S<="1001111";--X"4F"->3WHEN "0100"=>LED7S<="1100110";--X"66"->4WHEN "0101"=>LED7S<="1101101";--X"6D"->5WHEN "0110"=>LED7S<="1111101";--X"7D"->6WHEN "0111"=>LED7S<="0000111";--X"07"->7WHEN "1000"=>LED7S<="1111111";--X"7F"->8WHEN "1001"=>LED7S<="1101111";--X"6F"->9WHEN "1010"=>LED7S<="1110111";--X"77"->10WHEN "1011"=>LED7S<="1111100";--X"7C"->11WHEN "1100"=>LED7S<="0111001";--X"39"->12WHEN "1101"=>LED7S<="1011110";--X"5E"->13WHEN "1110"=>LED7S<="1111001";--X"79"->14WHEN "1111"=>LED7S<="1110001";--X"71"->15WHEN OTHERS=>NULL;END CASE;END PROCESS;END;编译、综合、仿真本例程,并对其仿真波形作出分析说明。
第2-5讲 VHDL语言结合逻辑电路设计

END ymq83;
请注意 数据类型 的声明
译 码 器 设 计
ARCHITECTURE behavior OF ymq83 IS SIGNAL INDATA:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN 该描述 INDATA<=C&B&A; PROCESS(INDATA) 不具有 BEGIN 优先级 CASE INDATA IS WHEN “000” => Y<=“11111110”; WHEN “001” => Y<=“11111101”; WHEN “010” => Y<=“11111011”; WHEN “011” => Y<=“11110111”; WHEN “100” => Y<=“11101111”; WHEN “101” => Y<=“11011111”; WHEN “110” => Y<=“10111111”; WHEN “111” => Y<=“01111111”; WHEN OTHERS => Y<=“XXXXXXXX”; END CASE; END PROCESS; END behavior;
PROCESS (i) BEGIN CASE i IS WHEN "00000001" => y <="000"; WHEN "00000010" => y <="001"; WHEN "00000100" => y <="010"; WHEN "00001000" => y <="011"; WHEN "00010000" => y <="100"; WHEN "00100000" => y <="101"; WHEN "01000000" => y <="110"; WHEN "10000000" => y <="111"; WHEN OTHERS => y <= "ZZZ"; END CASE; END PROCESS; END ARCHITECTURE ONE ;
第10讲-组合逻辑电路的VHDL描述、竞争与冒险

第十讲 组合逻辑电路的VHDL描述、竞争与冒险
4
VHDL介绍
把特定的结构体关联(指定给)一个确定的实体,为 大型系统的设计提供管理和工程组织。
configuration 配置名 of 实体名 is
for 选配结构体名
end for ;
end 配置名;
配置:从某个实体的多种结构体描述方式中选择 特定的一个。
第十讲 组合逻辑电路的VHDL描述、竞争与冒险
18
VHDL介绍
port ( a : in bit ; b : in bit ; c: out bit );
end or_gate ;
上面的实体声明描述了一个或门单元,它有三 个引脚a、b、c。给出了三个引脚a、b、c的参 数;in和out数据类型是bit。
9
VHDL介绍
3、结构体(ARCHITECTURE)
基本设计单元的实体,用于指明设计基本单元的行为、 元件及内部连接关系,即定义设计单元的功能。
ARCHITECTUTE behav OF half_adder IS BEGIN Padder:PROCESS(a,b) BEGIN
sum<=a XOR b AFTER 5ns; carry<=a AND b AFTER 5ns; ENDPROCESS Padder; END behav;
第十讲 组合逻辑电路的VHDL描述、竞争与冒险
23
用VHDL描述基本逻辑器件
第3章 组合电路的VHDL设计

都放在敏感信号表中。例如例3-1中的输入信号a、b和s出现在了进程语句中,所
以须将它们全部列入敏感信号表中。
PROCESS语句的执行依赖于敏感信号的变化(或称发生事件),当某一敏感信号有变 ,如a,从‘1’跳变到‘0’,或从‘0’跳变到‘1’时,就将启动此进程语句,于 是该PROCESS至END PROCESS引导的语句(包括其中的顺序语句)被执行一遍;然后返回进
程的起始端,进入等待状态,直到下一次敏感信号表中某一信号或某些信号发生事件后才
再次进入“启动-运行”状态。 ★ 1个结构体可包含任意个进程语句结构,所有的进程语句本身都是并行
语句,而由任1进程PROCESS引导的语句属于顺序语句。
精品PPT
3.1 多路选择器及其VHDL描述 (miá o shù )
VHDL完整的、可综合的程序结构必须能完整地表达一个数字电路功能模 块的端口形式和电路功能,即无论是一片74LS138还是一片CPU,都必须包含 实体和结构体两个最基本的语言结构。
4. 端口语句(yǔjù)和端口信号 名
描述电路的端口及其端口信号必须用端口语句PORT()来引导,并在语句 结尾处加分号“;”。
在例3-1的实体描述中—— IN :定义端口a、b和s为信号输入端口。 OUT:定义端口 y为信号输出端口。
端口模式用于定义端口上 数据的流动方向和方式, 有如图3-4所示的4种:
精品PPT
3.1 多路选择器及其VHDL描述 (miá o shù )
5. 端口模式(móshì)
(1)IN:输入端口。定义的通道为单向只读模式,即规定数据只能由此端口被读 入实体中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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、实验二的过程中,一度遇到编译报错的问题,后面经检验发现程序的内部架构不完整,顶层文件与子文件的调用关系不明朗,子函数中逻辑缺失,程序不完整,因此在之后的大型程序编写中,要注意先建好程序的内部联系,使逻辑清晰.各种程序调用关系要清楚,不能混淆。