数字系统与VHDL程序设计语言001.ppt

上传人:星星 文档编号:1024077 上传时间:2024-03-23 格式:PPT 页数:100 大小:1.86MB
下载 相关 举报
数字系统与VHDL程序设计语言001.ppt_第1页
第1页 / 共100页
数字系统与VHDL程序设计语言001.ppt_第2页
第2页 / 共100页
数字系统与VHDL程序设计语言001.ppt_第3页
第3页 / 共100页
数字系统与VHDL程序设计语言001.ppt_第4页
第4页 / 共100页
数字系统与VHDL程序设计语言001.ppt_第5页
第5页 / 共100页
点击查看更多>>
资源描述

1、 课程简介课程简介数字系统与数字系统与VHDL程序设计语言程序设计语言引例引例:VHDL原理原理:VHDL语言语言非常高速硬件描述语言非常高速硬件描述语言,也就是一种硬件也就是一种硬件(数字电路数字电路)设计设计语言语言.其其最大特点最大特点是对电路的行为与结构进行高度抽象化是对电路的行为与结构进行高度抽象化规范化,并对设计进行模拟验证与综合优化,使分析和设规范化,并对设计进行模拟验证与综合优化,使分析和设计高度自动化。计高度自动化。支持支持VHDL语言的软件平台语言的软件平台Max+PlusII 由软件设计到硬件实现之间的媒介由软件设计到硬件实现之间的媒介CPLD/FPGA (可编程器件可编

2、程器件)由由软软件件设设计计到到硬硬件件实实现现的的流流程程常用数字电路回顾常用数字电路回顾(1)编码器 输入输入信号信号输出输出信号信号使能端口使能端口注:注:EN为为1时编码器工作时编码器工作举例举例(2)译码器 1 1 1 1 译码器译码器VHDLVHDL与数字电路设计与数字电路设计 引引引引 言言言言 VHDLVHDL简介简介简介简介 一、由来 VHDL是是Very High speed Integrated Circuit Hardware Description Language(非常高速集成电路硬件描述语言)的英文缩写。它是由美国国防部支持的一项研究计划,于1983年创建,目的是

3、以文字化方法描述电子电路与系统。至今VHDL约有40年的发展历史,1987年,VHDL成为IEEE标准,即IEEE1076标准,1993年修改为IEEE1164标准,1996年,IEEE又将电路合成的标准程序与规格加入到VHDL语言中,称为1076.3标准。之后,又有1076.4标准和1076.6标准。第一章第一章 VHDL的程序结构和软件操作的程序结构和软件操作1-1 VHDL程序的基本结构程序的基本结构 1-2软件操作软件操作Max+plus的操作的操作 第一章第一章 VHDL的程序结构和软件操作的程序结构和软件操作1-1 VHDL程序的基本结构程序的基本结构(1)LIBRARY和PACH

4、AGE的声明部分 作用:库(Library)是用于存放预先编译好的程序包 (Package),程序包中定义了数据集合体、逻 辑操作和元件等。主要是声明在设计或实体中 将用到的常数,数据类型,元件及子程序等。使用格式:LIBRARY 库名;USE 库名.程序包名.All;(2)ENTITY定义 作用:定义本设计的输入/出端口,即定义电路的外观,即I/O接口的类型和数量使用格式:端口名:端口模式 数据类型;);ENTITY 实体名 IsEnd 实体名;格式格式格式格式:Port (端口名:端口模式 数据类型;(3)ARCHITECTURE定义 作用:定义实体的实现。即电路的具体描述,说明电路执 行

5、什么动作或实现功能。ARCHITECTURE 结构体名 Of 实体名 IsBegin 描述语句;End 结构体名;使用格式使用格式使用格式使用格式:在Max+plus系统中有4个库能支持VHDL语言,它们分别是Std库、IEEE库、Altera库和Lpm库。Std库和IEEE库提供基本的逻辑运算函数及数据类型转换函数等。IEEE库中的程序包std_logic_1164定义了std_logic和std_logic_vector等数据类型。举例举例举例举例:设计一个与门电路设计一个与门电路设计一个与门电路设计一个与门电路逻辑符号逻辑符号逻辑符号逻辑符号真值表真值表真值表真值表Library IEE

6、E;Use std.standard.all;Entity and2 isPort(A:in bit;B:in bit;Y:out bit);End and2;-首先定义输入输出端口名字,模式(Mode),信号类型-注意最后语句的分号在括号外 实体定义实体定义:Architecture Na of and2 is Begin Y=0 when a=0 and B=0 else0 when A=1 and B=0 else 0 when A=0 and B=1 else 1;End Na结构体定义结构体定义:端口模式有以下几种类型:IN;OUT;INOUT;BUFFER。Architecture

7、 Nb of and2 is Beginc=1 when a=1 and b=1 else 0;End Nb;以上结构体表达何种电路?以上结构体表达何种电路?一个实体可以有几个结构体,即结构体的定义可以有不同的形式结论:1-2软件操作软件操作Max+plus的操作的操作 1-2-1 建立和编写一个建立和编写一个VHDL语言的工程文件语言的工程文件1-2-2 VHDL程序的编译程序的编译 1-2-3 VHDL语言程序的仿真语言程序的仿真 1-2-4 芯片的时序分析芯片的时序分析1-2-5 安排芯片脚位安排芯片脚位 1-2软件操作软件操作Max+plus的操作的操作 1.Max+plus开发工具是

8、美国Altera公司自行设计的一种软件工具,其全称为Multiple Array Matrix and Programmable Logic User System。它具有原理图输入和文本输入(采用硬件描述语言)两种输入手段,利用该工具所配备的编辑、编译、仿真、综合、芯片编程等功能,将设计电路图或电路描述程序变成基本的逻辑单元写入到可编程的芯片中(如FPGA芯片),作成ASIC芯片。它是EDA设计中不可缺少的一种工具。2.软件安装我们通过范例介绍:利用Max+plus系统(1)如何编写VHDL程序(使用Text Editor);(2)如何编译VHDL程序(使用Compiler);(3)如何仿真

9、验证VHDL程序(使用Waveform Editor,Simulator);(4)如何进行芯片的时序分析(使用Timing Analyzer);(5)如何安排芯片脚位(使用Floorplan Editor);(6)如何下载程序至芯片(使用Programmer)。1-2-1 建立和编写一个建立和编写一个VHDL语言的工程文件语言的工程文件 首先启动Max+plus系统,启动后系统进入主菜单画面,在主菜单 上有5个选项,分别是:Max+plus、File、Assign、Options和Help。(1)打开文本编辑器;用鼠标点击File选项,点击子菜单中的 New选项,接着屏幕会出现New的对话框。

10、在对话框内有4 种编辑方式:图形编辑、符号编辑、文本编辑和波形编辑。VHDL文件属于文本,那么应该选择文本编辑方式,点击 OK按钮,屏幕上将出现一个无名的编辑窗口,则系统进入 文本编辑状态。(2)在编辑窗口中进行编辑输入,输入相应的描述语句。(3)存盘。(a 我们编辑的VHDL文件扩展名为vhd;b 保存的文 件名必须和所定义的实体名相同。c 文件存盘的目录不应是 根目录或桌面,建议存放在Max2work或Maxplus2目录,或 其子目录。)以与门的设计为例讲述具体过程 1-2-2 VHDL程序的编译程序的编译(1)若文件没有打开,需首先打开要编译的VHDL文件;(2)将目前的文件设置成工程

11、文件;点击File选项,光标移到子菜单的 Project项停留几秒钟,屏幕上会出现下一级菜单,点击Set Project to Current File(3)打开编译器;点击主菜单MAX+plus/Compiler选项,屏幕上就出现编译 对话框。(4)开始编译;完成了上述编译前的准备及必要的设置工作,点击编译对话框 中的Start按钮,编译即开始。以与门的设计为例讲述具体过程 1-2-3 VHDL语言程序的仿真语言程序的仿真 仿真是为了验证我们所编写的VHDL程序的功能是否正确。(1)首先生成仿真波形文件(a)打开波形编辑器;点击主菜单的MAX+plus/Waveform Editor选项,就

12、 可在屏幕上显示波形编辑器窗口。在未输入信号名以前,整个窗口是空 白的。(b)确定仿真持续时间(File/End Time)。(c)选则输入输出端口名;(d)编辑输入信号波形;(e)信号波形编辑完成后,需存盘为仿真使用,信号波形编辑完成后,需存盘为仿真使用,文件名采取默认方式即可。(2)打开仿真器;点击主菜单MAX+plusSimulator项,此时弹出Simulator 对话框。点击对话框的Start按钮,仿真即开始。在仿真结束后打开仿真波 形文件(点击右下角的Open SCF按钮)即可以显示仿真结果。(以与门的设计为例讲述具体过程)1-2-4 芯片的时序分析芯片的时序分析仿真结果从波形上来

13、看,很难给出定量的信号延迟关系,这一点时序分析却能直观地用表来进行显示。(1)选择要下载的器件型号;(2)需要再编译一次。)需要再编译一次。(点击主菜单的Assign/Device项得到Device对话框)(3)打开时序仿真器;(点击Timing Analyzer选项)(4)最后点击Start按钮后,时序分析器开始启动。(以与门的设计为例讲述具体过程)1-2-5 安排芯片脚位安排芯片脚位 为了将程序下载到芯片,需安排芯片脚位。(1)打开芯片脚位设置器;(MAX+plus/Floorplan Editor)(2)将实体定义的端口名字和下载芯片的管脚进行具体对应;(3)最后再进行一次编译。)最后再

14、进行一次编译。教学演示片第二章第二章 VHDL语言要素语言要素 2.1 VHDL语言规则数字型文字、字符串文字、标识符、下标名、段名 2-2 数据类型数据类型 数据类型分类:逻辑信号类型和数值信号类型数据类型分类:逻辑信号类型和数值信号类型。2-2-1逻辑数据类型逻辑数据类型(1)布尔代数()布尔代数(Boolean)型型 定义位置:在定义位置:在std库的库的standard程序包中进行定义。程序包中进行定义。信号形式:信号形式:FALSE,TRUE(2)位()位(Bit)定义位置:在定义位置:在std库的库的standard程序包中进行定义。程序包中进行定义。信号形式:信号形式:0,1(低

15、电位,高电位(低电位,高电位)编码器编码器:输入输入信号信号输出输出信号信号(3)位数组类型(Bit_Vector)定义位置:在std库的standard程序包中进行定义。例例例例 :Signal A:bit_vector(0 to 7);Signal B:bit_vector(2 downto 0);输入输入信号信号输出输出信号信号(4)标准逻辑型标准逻辑型(Std_Logic)定义位置:在IEEE库的std_logic_1164程序包中进行定义 可以看出,这个“标准逻辑”信号定义,比“位即bit”信号对于数字逻辑电路的逻辑特性描述更完整、更真实。所以在VHDL的程序里,对于逻辑信号的定义,

16、通常都是采用这个“标准逻辑”信号形式。使用这类数据信号,必须包含下面两条声明语句:Library IEEE;Use IEEE.std_logic_1164.all;(5)标准逻辑数组类型标准逻辑数组类型(Std_Logic_vector)定义位置:在ieee库的std_logic_1164程序包中进行定义。Bit_Vector与与Std_Logic_vector的的区别在于数组的区别在于数组的每一位前者为每一位前者为BIT型(型(0,1)后者为)后者为Std_Logic型型 2-2-2 数值数据类型数值数据类型(1)整数(Integer)定义位置:在std库的standard程序包中进行定义。

17、即数值范 围为-231231。(2)无符号(Unsigned)和有符号(Signed)类型定义位置:有符号(Signed)和无符号(Unsigned)逻辑信号定义在 库IEEE的程序包std_logic_arith中。有符号类型数据代表有符号数值,即可以是正数,有符号类型数据代表有符号数值,即可以是正数,0,负数;编,负数;编 译器将有符号数类型作为一个补码的二进制数,最左边的位为译器将有符号数类型作为一个补码的二进制数,最左边的位为 符号位。符号位。无符号类型数据代表无符号数值,即代表无符号类型数据代表无符号数值,即代表0或正数;最左边的位或正数;最左边的位为最高位。如:为最高位。如:Uns

18、igned(“0110”)代表代表 ;+6+10Unsigned(“1010”)代表代表如:如:signed(“0110”)代表代表+6;signed(“1010”)代表代表-2。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity data isport(a,b:in unsigned(3 downto 0);-相应改为a,b:in signed(3 downto 0);c:out std_logic);end data;architecture m1 of data isbegin c=1

19、when ab else 0;end m1;当定义成无符号数据类型时,若当定义成无符号数据类型时,若a=”1000”,b=0001a=”1000”,b=0001,即,即a=8a=8,b=1b=1则结则结果果另外:还有其他另外:还有其他positive,natural,realpositive,natural,real数据类型以及用户自定义数据数据类型以及用户自定义数据 类型等类型等。这些数据类型各有这些数据类型各有 特点,以后用到再行讲解特点,以后用到再行讲解c=1c=1。c=0c=0;当定义成有符号数据类型时,若当定义成有符号数据类型时,若a=”1000”,b=0001a=”1000”,b=

20、0001,a=-8a=-8,b=1b=1,则结果则结果2.3 VHDL数据对象数据对象数据对象(Data Objects):凡是可以被赋予一个值的对象称为数据对象凡是可以被赋予一个值的对象称为数据对象,数据对象用于传递信号。数据对象用于传递信号。例例例例 :数据对象名数据对象名 数据对象类型数据对象类型 数据对象值的类型数据对象值的类型 2-3-1 信号信号信号数据对象,代表电路内部传输线路线路,其在元件之间起互连作用信号数据对象,代表电路内部传输线路线路,其在元件之间起互连作用 信号数据对象的定义格式为:Signal 信号名:数据类型信号名:数据类型:=设定值设定值;如:Signal A:S

21、td_logic_vector(3 Down to 0):=“0000”;注意:由于注意:由于Maxplus II系统往往会忽略信号对象定义时所赋初始值,建议在结系统往往会忽略信号对象定义时所赋初始值,建议在结 构体中用赋值语句完成对信号的赋值。构体中用赋值语句完成对信号的赋值。信号赋值语句的语法格式为:目标信号名目标信号名=表达式(设定值);表达式(设定值);A =“1010”2-3-2 变量变量 它用于对中间数据的临时存储,并不一定代表电路的某一组件。变量数据对象的定义格式为:Variable 变量名:数据类型:=设定值;如:Variable a:integer:=0;变量赋值语句的语法格

22、式为:目标变量名:=表达式(设定值);表达式(设定值);注意:由于注意:由于MAXPLUSIIMAXPLUSII系统往往会忽略变量对象定义时所赋初始值,建议在结系统往往会忽略变量对象定义时所赋初始值,建议在结 构体中用赋值语句完成对变量的赋值。构体中用赋值语句完成对变量的赋值。如:a:=b+c;常数的定义格式为:Constant 常数名:数据类型:=表达式;如:Constant D1:Integer:=3;Constant D2:Std_Logic_Vector(D1 Down to 0):=”0000”;注意:常数数据对象定义的同时进行赋值。赋值符号为注意:常数数据对象定义的同时进行赋值。赋

23、值符号为“:=”2-3-3 常数常数2-3-4 信号、变量、信号、变量、常数对比常数对比一、定义Signal A:std_logic;Variable A:std_logic_vector(7 downto 0);Constant A:integer:=6;二、赋值及赋值时刻A=“1010”;(延时)A:=“1010”;(立刻)三、定义区域信号:实体、结构体、程序包变量:进程、子程序常数:实体、结构体、程序包、块、进程、子程序四、适用范围信号:实体、结构体、程序包变量:定义了变量的进程、子程序的顺序语句中常数:视其定义的位置而定若常数定义在实体中,适用范围是实体所对应的有结构体。若常数定义在结

24、构体中,适用范围就是本结构体。执行结果为:执行结果为:x=c xor b,y=c xor b 执行结果为:执行结果为:x=c xor a,y=c xor b 练习:1定义信号 A1,A2,A3,A4,A5,A6,A7,A8其中每一位信号均为标准逻辑型2.定义信号B,其数据类型为标准逻辑型。3.定义信号C,数据类型为整数型。4.给A、B赋值,其中A的值为11001101;B的值为0。Library IEEEUse ieee.std_logic_1164.allSignal A:std_logic_vector(1 to 8)Signal B:std_logicSignal C:integerLi

25、brary StdUse std.standard.allA=“11001101”B=02.4 VHDL 操作符VHDL操作符:逻辑、算术、符号、关系操作符。操作符:逻辑、算术、符号、关系操作符。2.4.1 逻辑运算符一、分类及功能And(与),Or(或),Not(非),Nand(与非),Nor(或非),Xor(异或),Xnor(同或)。二.用法1.操作数的数据类型必须符合操作符的要求能进行逻辑运算的数据类型:bit、bit_vector、booleanstd_logic、std_logic_vector例例Signal a,b,y:std_logic;Signal c,d,z:integer

26、;y=a and b;z=c and d;2.表达式中有多个运算符时一般要加括号表达式中有多个运算符时一般要加括号,但and、or、xnor除外例例Signal a,b,c,d:std_logic_vector(3 downto 0);Signal e,f,g,h:std_logic_vector(1 downto 0);d=a and b and c;d=a or b or c;d=a xnor b xnor c;h=e nor f nor g;h=(e nor f)nor g;3.运算符两侧的操作数要对称d=(e nor f)nor g;Library IEEEUSE IEEE.STD_L

27、OGIC_1164.ALL;ENTITY liti IS;PORT(a,b,c,d:IN STD_LOGIC;e:out STD_LOGIC);END liti;ACHITECTURE AA1 OF liti ISBEGINe=(a and b)or tmp;Signal tmp:std_logic;tmp=c xor d;END AA1;2.4.2 关系运算符=(等于),/=(不等于),(大于),=(大于等于)。注1.等于和不等于的操作对象可以是任何数据类型构成的操作数。2.其它关系运算符对数据类型有一定的限制。(整数,枚举型)3.=、/=在实现硬件电路时比其它的关系运算符对芯片的利用率 要

28、高ENTITY my1 isPORT(a,b:in bit_vector(0 to 3)m:out boolean);END my1;ARCHITECTURE a1 of my1BEGINm=(a=b);END a1;ENTITY my1 isPORT(a,b:in bit_vector(0 to 3)m:out boolean);ARCHITECTURE a1 of my1BEGINm=b);END a1;以上两程序最终所实现的硬件电路见课本以上两程序最终所实现的硬件电路见课本P78END my1;2.4.3 算术运算符一、分类及功能一、分类及功能求和运算符、求积运算符、符号运算符、混合运算

29、符、移位运算符二二.运用运用1.求和运算符VHDL中的求和运算符包括加减运算和并置运算,操作数的数据类型为整型。例例1:Variable a,b,c,d,e,f:integer range 0 to 255;a:=b+c;d:=e f;例例2:Signal a:std_logic_vector(4 to 0);Signal b:std_logic_vector(2 to 0);Signal c:std_logic_vector(1 to 0);a=b c2.移位运算符移位运算符移位运算所对应的数据类型为一维数组,其中的元素维移位运算所对应的数据类型为一维数组,其中的元素维bit、boolean

30、 例:Variable a1:std_logic_vector(3 to 0);a1:=“1011”;a1 SLL 1;a1=0110a1 SLL 2;a1=1100a1 ROL 1;a1=01113.其它其它略略二、应用二、应用现在现在VHDLVHDL已成功地应用于已成功地应用于ASICASIC自动设计的模拟验证和综合优化自动设计的模拟验证和综合优化等方面。等方面。VHDLVHDL是以文字的方式设计电路,在应用上,目前是以文字的方式设计电路,在应用上,目前VHDLVHDL语言还仅限于数字电路的开发和设计。语言还仅限于数字电路的开发和设计。三、三、VHDLVHDL和电路图设计方式比较和电路图设

31、计方式比较VHDLVHDL与电路图设计电路的方式不同,主要有如下几方面与电路图设计电路的方式不同,主要有如下几方面 的优越性:的优越性:(1 1)易于修改;)易于修改;(2 2)设计能力更强;)设计能力更强;(3 3)VHDLVHDL语言很方便:独立于器件设计;相同的程序语言很方便:独立于器件设计;相同的程序 代码可以用于不同厂家生产的器件。代码可以用于不同厂家生产的器件。VHDL VHDL 操作符复习回顾操作符复习回顾一、逻辑运算符一、逻辑运算符AndAnd(与),与),OrOr(或),或),NotNot(非),非),NandNand(与非),与非),NorNor(或非),或非),XorXo

32、r(异或),异或),XnorXnor(同或)。同或)。能能进行逻辑运算的数据类型:进行逻辑运算的数据类型:bitbit、bit_vectorbit_vector、booleanbooleanstd_logicstd_logic、std_logic_vectorstd_logic_vector二、关系运算符二、关系运算符=(等于),(等于),/=/=(不等于),(不等于),(大于),(大于),=(大于等于)。(大于等于)。1.1.等于和不等于的操作对象可以是任何数据类型构成的操作数。等于和不等于的操作对象可以是任何数据类型构成的操作数。2.2.其它关系运算符对数据类型有一定的限制。(整数,枚举型

33、)其它关系运算符对数据类型有一定的限制。(整数,枚举型)三、算术运算符三、算术运算符求和运算符求和运算符、求积运算符、符号运算符、混合运算符、求积运算符、符号运算符、混合运算符、移位运算符移位运算符 VHDLVHDL中的求和运算符包括加减运算和并置运算,中的求和运算符包括加减运算和并置运算,操作数的数据类型操作数的数据类型 为整型。为整型。Signal a:std_logic_vector(4 downto 0);Signal b:std_logic_vector(2 downto 0);Signal c:std_logic_vector(1 downto 0);b c a=b cVariab

34、le A:std_logic_vector(6 downto 0);A:=“10110001”;A SLL 1;A ROL 1;第三章 VHDL顺序语句一、顺序语句概念顺序语句的特点是,每一条顺序语句的执行顺序执行顺序是与它们的书写顺书写顺序序基本一致的。顺序语句只能出现在进程(Process)和子程序中,子程序包括函数(Function)和过程(Procedure)。二、种类 进程语句赋值语句 流程控制语句 等待语句 子程序调用语句 返回语句 空操作语句3.1 进程语句进程语句(Process 语句)语句)0000输入信号发生变化时,电路启动进行计算输入信号发生变化时,电路启动进行计算v进程

35、语句是由顺序语句构成的,通过信号与结构体其余部分进行信进程语句是由顺序语句构成的,通过信号与结构体其余部分进行信息交流,在进程中有一个敏感信号列表,表中列出的任何信号的改息交流,在进程中有一个敏感信号列表,表中列出的任何信号的改变都将启动进程,执行进程内相应的顺序语句。进程语句是将并行变都将启动进程,执行进程内相应的顺序语句。进程语句是将并行语句和顺序语句区分开来的标志之一。语句和顺序语句区分开来的标志之一。区区区区别别别别3.2 赋值语句赋值语句赋值语句包括变量赋值语句和信号赋值语句,前者的赋值是立刻发生的,赋值语句包括变量赋值语句和信号赋值语句,前者的赋值是立刻发生的,后者的赋值发生在一个

36、进程结束的时刻,并延时进行。后者的赋值发生在一个进程结束的时刻,并延时进行。变量赋值目标变量赋值目标:=赋值源赋值源信号赋值目标信号赋值目标=赋值源赋值源在在同一进程中,同一信号赋值目标有多个赋值源时,信号赋值目标获同一进程中,同一信号赋值目标有多个赋值源时,信号赋值目标获得的是最后一个赋值源的值,其前面相同的赋值目标不做任何变化。得的是最后一个赋值源的值,其前面相同的赋值目标不做任何变化。注:注:3.2.1 信号和变量赋值信号和变量赋值Signal s1,s2:std_logic;Signal sec:std_logic_vector(0 to 7);Process(s1,s2)Variab

37、le v1,v2:std_logic;Begin v1:=1;v2:=1;s1=1;s2=1;sec(0)=v1;sec(1)=v2;sec(2)=s1;sec(3)=s2;v1:=0;v2:=0;s2=0;sec(4)=v1;sec(5)=v2;sec(6)=s1;sec(7)=s2;END PROCESS“0100 0111”3.2.2 信号和变量赋值举例信号和变量赋值举例1.标识符赋值目标标识符赋值目标Variable a,b:std_logic;Signal c:std_logic_vector(1 to 4);a:=1;b:=0;c=“1100”;c(3)=1;注:注:2.段赋值段赋

38、值Signal c:std_logic_vector(1 to 4);c(1 to 2)=10;c(1 to 4)=1010;3.块赋值块赋值Signal a,b,c,d:std_logic;Signal s:std_logic_vector(1 to 4);s=“0100”;(a,b,c,d)3,f=4,g(1)=2,g(2)=1);名称关联名称关联结果:结果:h的值为的值为10103.3 流程控制语句流程控制语句3.3.1 IF语句语句根据条件进行相应赋值操作例例1:一、第一种IF语句IF 条件句 THEN 顺序语句END IF例例题题语句语句格式格式IF (a b)THEN outb)T

39、HEN out=1;ELSEout=0;END IF;三、第三种三、第三种IF语句语句语句格式例题例题1:Signal a,b,c,p1,p2,z:bit;IF (p1=1)THENz=a;ELSIF(p2=0)THENz=b;ELSEz=c;END IF;?选择方式选择方式cbaa画线部分意思:画线部分意思:ELSIF(p1=0 and p2=0)注注例题例题2:8线线3线优先编码器线优先编码器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY coder ISPORT(I:IN STD_LOGIC_VECTOR(0 TO 7)Y:OUT STD_

40、LOGIC_VECTOR(1 TO 3);END coder;实实 体体 设设 计计功能:设计元件外观功能:设计元件外观ARCHITECTURE a1 or coder ISBegin IF(I(7)=1)THEN Y=“111”;ELSIF(I(6)=1)THEN Y=“110”;ELSIF(I(5)=1)THEN Y=“101”;ELSIF(I(4)=1)THEN Y=“100”;ELSIF(I(3)=1)THEN Y=“011”;ELSIF(I(2)=1)THEN Y=“010”;ELSIF(I(1)=1)THEN Y=“001”;ELSE Y=“000”;END a1;结结 构构 体体

41、 设设 计计功能:描述输入和输出之间的逻辑关系功能:描述输入和输出之间的逻辑关系END IF;练习题:练习题:设计一个设计一个3线线8线译码器线译码器元件外观元件外观输入输出逻辑关系输入输出逻辑关系LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY coder ISPORT(A:IN STD_LOGIC_VECTOR(1 TO 3)Y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END coder;实实 体体 设设 计计功能:设计元件外观功能:设计元件外观ARCHITECTURE a1 or coder ISBegin IF A

42、=“000”THEN Y=“00000001”;ELSIF A=“001”THEN Y=“00000010”;ELSIF A=“010”THEN Y=“00000100”;ELSIF A=“011”THEN Y=“00001000”;ELSIF A=“100”THEN Y=“00010000”;ELSIF A=“101”THEN Y=“00100000”;ELSIF A=“110”THEN Y=“01000000”;ELSE Y顺序语句 When 选择值=顺序语句 End case;CASE 语句根据满足的条件直接直接选择多项顺序语句的一项执行=不是信号赋值符号,其意思等价于“THEN”注注例

43、题例题1:用用CASE语句设计四选一数据选择器语句设计四选一数据选择器 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALLENTITY mux41 ISPORT(s1,s2:in std_logic;a,b,c,d:in std_logic;z:out std_logic);END ENTITY mux41;ARCHITECTURE activ OF mux41 ISSIGNAL s:std_logic_vector(1 downto 0);BEGINS z z z z z=x;END CASE;END PROCESS;END activ;ARCHITECTURE

44、 activ OF mux41 ISSIGNAL s:std_logic_vector(1 downto 0);BEGINSz;ELSIF s=“01”then b=z;ELSIF s=“10”then c=z;ELSE d=z;END IF;END ARCHITECTURE activ;ARCHITECTURE activ OF mux41 ISSIGNAL s:std_logic_vector(1 downto 0);BEGINS z z z z z Z1 Z2 Z3Z410;END LOOP L2;二、FOR_LOOP语句LOOP标号:FOR 循环变量循环变量 IN 循环次数范围 LOOP 顺序语句;END LOOP LOOP 标号;例:试设计一个八位奇偶校验器例:试设计一个八位奇偶校验器 注:注:0 XOR a=a

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 技术资料 > 其他资料

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922