EDA_Verilog_VHDL语言_最强大的PPT_第1页
EDA_Verilog_VHDL语言_最强大的PPT_第2页
EDA_Verilog_VHDL语言_最强大的PPT_第3页
EDA_Verilog_VHDL语言_最强大的PPT_第4页
EDA_Verilog_VHDL语言_最强大的PPT_第5页
已阅读5页,还剩195页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 课程简介课程简介数字系统与数字系统与VHDL程序设计语言程序设计语言引例引例 :VHDL原理原理 :可可 编编程程 逻逻辑辑 器器件件串串行行口口目目 标标器器 件件接接 口口软软 件件 编编 程程牛牛自自 动动 生生 产产 线线牛牛罐罐头头酸酸辣辣味味儿儿五五香香味味儿儿麻麻辣辣味味儿儿计计算算机机控控制制系系统统 VHDL语言语言非常高速硬件描述语言非常高速硬件描述语言, 也就是一种硬件也就是一种硬件(数字电路数字电路)设计语设计语言言. 其其最大特点最大特点是对电路的行为与结构进行高度抽象化规范是对电路的行为与结构进行高度抽象化规范化,并对设计进行模拟验证与综合优化,使分析和设计高化,

2、并对设计进行模拟验证与综合优化,使分析和设计高度自动化。度自动化。 支持支持VHDL语言的软件平台语言的软件平台Max+PlusII 由软件设计到硬件实现之间的媒介由软件设计到硬件实现之间的媒介CPLD / FPGA (可编程器件可编程器件)在在Max+PlusII编写编写VHDL程序程序存盘存盘(文件名为实体名文件名为实体名,后缀为后缀为 .VHD)编译编译 软件仿真软件仿真管脚安排管脚安排下载下载 由由软软件件设设计计到到硬硬件件实实现现的的流流程程 基本顺序语句基本顺序语句(1)Process语句语句(2)If-Else语句语句(3)Case-When语句语句(4)Null语句语句(5)

3、Wait until语句语句(6)变量赋值语句)变量赋值语句(7)For-Loop语句语句(8)过程调用语句)过程调用语句 基本的并行语句基本的并行语句(1)直接赋值语句)直接赋值语句(2) Process语句语句(3)When-Else(4)With-Select-When(5)元件例化语句)元件例化语句(6)For-Generate常用数字电路回顾常用数字电路回顾(1)编码器 A A7 7A A6 6A A5 5A A4 4A A3 3A A2 2A A1 1A A0 0E EN NY Y2 2Y Y1 1Y Y0 08 X 38 X 3编码器输入输入信号信号输出输出信号信号使能端口使能端

4、口注:注:EN为为1时编码器工作时编码器工作000100000001000100000001000100000110000100000010000100010100000100011000000101110000000101201234567YYYAAAAAAAA000100000001000100000001000100000110000100000010000100010100000100011000000101110000000101201234567YYYAAAAAAAA0001000000010001000000010001000001100001000000100001000101

5、00000100011000000101110000000101201234567YYYAAAAAAAA000100000001000100000001000100000110000100000010000100010100000100011000000101110000000101201234567YYYAAAAAAAA000100000001000100000001000100000110000100000010000100010100000100011000000101110000000101201234567YYYAAAAAAAA0001000000010001000000010001

6、00000110000100000010000100010100000100011000000101110000000101201234567YYYAAAAAAAA举例举例参看参看EWB辅助电路辅助电路(2)译码器Y3Y2Y1Y01 11 11 10 01 11 10 01 11 10 01 11 10 01 11 11 1A1A00 00 00 01 11 10 01 11 1A1A000011011Y3Y2Y1Y01110110110110111S1 1 1 1 1 0000译码器译码器1 12 23 34 45 56 67 78 81 16 61 15 5 1 14 41 13 3 1

7、12 2 1 11 11 10 09 9V Vc cc c Y Y0 0 Y Y1 1Y Y2 2 Y Y3 3 Y Y4 4 Y Y5 5 Y Y6 6A A0 0 A A1 1 A A2 2S S3 3 S S2 2 S S1 1 Y Y7 7 G GN ND DC CT T7 74 41 13 38 8 一、由来 VHDL是是Very High speed Integrated Circuit Hardware Description Language (非常高速集成电路硬件描述语言)的英文缩写。它是由美国国防部支持的一项研究计划,于1983年创建,目的是以文字化方法描述电子电路与系统。

8、至今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和PACHAGE的声明部分 作用:库(L

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

10、CHITECTURE 结构体名 Of 实体名 IsBegin 描述语句; End 结构体名;在Max+plus系统中有4个库能支持VHDL语言,它们分别是Std库、IEEE库、Altera库和Lpm库。Std库和IEEE库提供基本的逻辑运算函数及数据类型转换函数等。IEEE库中的程序包std_logic_1164定义了std_logic和std_logic_vector等数据类型。A AB BY Y111001010000YBALibrary IEEE;Use std.standard.all;Entity and2 isPort( A: in bit; B: in bit; Y:out bi

11、t); 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 Nb of and2 is Beginc =1 when a=1 and b = 1 else 0;End Nb;

12、以上结构体表达何种电路?以上结构体表达何种电路?一个实体可以有几个结构体,即结构体的定义可以有不同的形式结论: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开发工具是美国Altera公司自行设计的一种软件工具,其全称为Multiple Array Matrix and Pro

13、grammable Logic User System。它具有原理图输入和文本输入(采用硬件描述语言)两种输入手段,利用该工具所配备的编辑、编译、仿真、综合、芯片编程等功能,将设计电路图或电路描述程序变成基本的逻辑单元写入到可编程的芯片中(如FPGA芯片),作成ASIC芯片。它是EDA设计中不可缺少的一种工具。2. 软件安装我们通过范例介绍:利用Max+plus系统(1)如何编写VHDL程序(使用Text Editor);(2)如何编译VHDL程序(使用Compiler); (3)如何仿真验证VHDL程序(使用Waveform Editor,Simulator); (4)如何进行芯片的时序分析

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

15、选择文本编辑方式,点击 OK按钮,屏幕上将出现一个无名的编辑窗口,则系统进入 文本编辑状态。(2)在编辑窗口中进行编辑输入,输入相应的描述语句。 (3)存盘。(a 我们编辑的VHDL文件扩展名为vhd;b 保存的文 件名必须和所定义的实体名相同。c 文件存盘的目录不应是 根目录或桌面,建议存放在Max2work或Maxplus2目录,或 其子目录。)以与门的设计为例讲述具体过程 1-2-2 VHDL程序的编译程序的编译 (1)若文件没有打开,需首先打开要编译的VHDL文件; (2)将目前的文件设置成工程文件;点击File选项,光标移到子菜单的 Project项停留几秒钟,屏幕上会出现下一级菜单

16、,点击Set Project to Current File(3)打开编译器;点击主菜单MAX+plus/Compiler选项,屏幕上就出现编译 对话框。(4)开始编译;完成了上述编译前的准备及必要的设置工作,点击编译对话框 中的Start按钮,编译即开始。 以与门的设计为例讲述具体过程 1-2-3 VHDL语言程序的仿真语言程序的仿真 仿真是为了验证我们所编写的VHDL程序的功能是否正确。 (1)首先生成仿真波形文件 (a)打开波形编辑器;点击主菜单的MAX+plus/Waveform Editor选项,就 可在屏幕上显示波形编辑器窗口。在未输入信号名以前,整个窗口是空 白的。(b)确定仿真

17、持续时间(File/End Time)。 (c)选则输入输出端口名; (d)编辑输入信号波形; (e)信号波形编辑完成后,需存盘为仿真使用,信号波形编辑完成后,需存盘为仿真使用,文件名采取默认方式即可。 (2)打开仿真器;点击主菜单MAX+plusSimulator项,此时弹出Simulator 对话框。点击对话框的Start按钮,仿真即开始。在仿真结束后打开仿真波 形文件(点击右下角的Open SCF按钮)即可以显示仿真结果。(以与门的设计为例讲述具体过程 )1-2-4 芯片的时序分析芯片的时序分析仿真结果从波形上来看,很难给出定量的信号延迟关系,这一点时序分析却能直观地用表来进行显示。(1

18、)选择要下载的器件型号; (2)需要再编译一次。)需要再编译一次。 (点击主菜单的Assign/Device项得到Device对话框)(3)打开时序仿真器; (点击Timing Analyzer选项 )(4)最后点击Start按钮后,时序分析器开始启动。 (以与门的设计为例讲述具体过程 )1-2-5 安排芯片脚位安排芯片脚位 为了将程序下载到芯片,需安排芯片脚位。 (1)打开芯片脚位设置器; (MAX+plus/Floorplan Editor)(2)将实体定义的端口名字和下载芯片的管脚进行具体对应; (3)最后再进行一次编译。)最后再进行一次编译。 教学演示片第二章第二章 VHDL语言要素语

19、言要素 V VH HD DL L语语言言要要素素包包括括数据对象数据对象变量变量信号信号常数常数数据类型数据类型操作数操作数运算操作符运算操作符2.1 VHDL语言规则数字型文字、字符串文字、标识符、下标名、段名 2-2 数据类型数据类型 数据类型分类:逻辑信号类型和数值信号类型数据类型分类:逻辑信号类型和数值信号类型。 2-2-1逻辑数据类型逻辑数据类型 (1)布尔代数()布尔代数(Boolean)型)型 定义位置:在定义位置:在std库的库的standard程序包中进行定义。程序包中进行定义。 信号形式:信号形式:FALSE,TRUE (2)位()位(Bit) 定义位置:在定义位置:在st

20、d库的库的standard程序包中进行定义。程序包中进行定义。 信号形式:信号形式:0,1 (低电位,高电位(低电位,高电位 )编码器编码器 :A A7 7A A6 6A A5 5A A4 4A A3 3A A2 2A A1 1A A0 0E EN NY Y2 2Y Y1 1Y Y0 08 X 38 X 3编码器输入输入信号信号输出输出信号信号000100000001000100000001000100000110000100000010000100010100000100011000000101110000000101201234567YYYAAAAAAAA00010000000100010

21、0000001000100000110000100000010000100010100000100011000000101110000000101201234567YYYAAAAAAAA000100000001000100000001000100000110000100000010000100010100000100011000000101110000000101201234567YYYAAAAAAAA0001000000010001000000010001000001100001000000100001000101000001000110000001011100000001012012345

22、67YYYAAAAAAAA000100000001000100000001000100000110000100000010000100010100000100011000000101110000000101201234567YYYAAAAAAAA000100000001000100000001000100000110000100000010000100010100000100011000000101110000000101201234567YYYAAAAAAAA(3)位数组类型(Bit_Vector) 定义位置:在std库的standard程序包中进行定义。 Signal A: bit_vec

23、tor(0 to 7); Signal B: bit_vector(2 downto 0); A A7 7A A6 6A A5 5A A4 4A A3 3A A2 2A A1 1A A0 0E EN NY Y2 2Y Y1 1Y Y0 08 8 X X 3 3编码器输入输入信号信号输出输出信号信号A A7 7A A6 6A A5 5A A4 4A A3 3A A2 2A A1 1A A0 0E EN NY Y2 2Y Y1 1Y Y0 08 8 X X 3 3编码器(4)标准逻辑型标准逻辑型(Std_Logic ) 定义位置:在IEEE库的std_logic_1164程序包中进行定义 可以看出

24、,这个“标准逻辑”信号定义,比“位即bit”信号对于数字逻辑电路的逻辑特性描述更完整、更真实。所以在VHDL的程序里,对于逻辑信号的定义,通常都是采用这个“标准逻辑”信号形式。使用这类数据信号,必须包含下面两条声明语句: Library IEEE;Use IEEE.std_logic_1164.all; (5)标准逻辑数组类型标准逻辑数组类型(Std_Logic_vector) 定义位置:在ieee库的std_logic_1164程序包中进行定义。 Bit_Vector与与Std_Logic_vector的区别在于数组的的区别在于数组的每一位前者为每一位前者为BIT型(型(0,1)后者为)后者

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

26、位。无符号类型数据代表无符号数值,即代表无符号类型数据代表无符号数值,即代表0或正数;最左边的位或正数;最左边的位为最高位。如:为最高位。如:Unsigned(“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

27、signed(3 downto 0); c: out std_logic);end data;architecture m1 of data isbegin c=1 when ab else 0;end m1; use ieee.std_logic_1164.all; ?use ieee.std_logic_arith.all; ?列举a、b具体值 ? 当定义成无符号数据类型时,若当定义成无符号数据类型时,若a=”1000”,b=0001a=”1000”,b=0001,即,即a=8a=8,b=1b=1则则结果结果另外:还有其他另外:还有其他positive ,natural,realposit

28、ive ,natural,real数据类型以及用户自定义数据数据类型以及用户自定义数据 类型等。这些数据类型各有类型等。这些数据类型各有 特点,以后用到再行讲解特点,以后用到再行讲解c=1c=1。 c=0c=0;当定义成有符号数据类型时,若当定义成有符号数据类型时,若a=”1000”,b=0001a=”1000”,b=0001,a=-8a=-8,b=1b=1,则结果,则结果2.3 VHDL数据对象数据对象数据对象(Data Objects): 凡是可以被赋予一个值的对象称为数据对象凡是可以被赋予一个值的对象称为数据对象,数据对象用于传递信号。数据对象用于传递信号。 数据对象名数据对象名 数据对

29、象类型数据对象类型 数据对象值的类型数据对象值的类型 2-3-1 信号信号信号数据对象,代表电路内部传输线路线路,其在元件之间起互连作用信号数据对象,代表电路内部传输线路线路,其在元件之间起互连作用 信号数据对象的定义格式为: Signal 信号名:数据类型信号名:数据类型:=设定值设定值; 如: Signal A : Std_logic_vector(3 Down to 0) := “0000”; 注意:由于注意:由于Maxplus II系统往往会忽略信号对象定义时所赋初始值,建议在结系统往往会忽略信号对象定义时所赋初始值,建议在结 构体中用赋值语句完成对信号的赋值。构体中用赋值语句完成对信

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

31、用赋值语句完成对变量的赋值。如: a := b+c;常数的定义格式为:Constant 常数名:数据类型 :=表达式; 如:Constant D1: Integer:=3; Constant D2: Std_Logic_Vector(D1 Down to 0) := ”0000”;注意:常数数据对象定义的同时进行赋值。赋值符号为注意:常数数据对象定义的同时进行赋值。赋值符号为 “:=” 2-3-3 常数常数2-3-4 信号、变量、信号、变量、常数对比常数对比一、定义Signal A: std_logic; Variable A: std_logic_vector(7 downto 0);Con

32、stant A: integer :=6 ;二、赋值及赋值时刻A = “1010”;(延时)A := “1010”; (立刻)三、定义区域信号:实体、结构体、程序包变量:进程、子程序常数:实体、结构体、程序包、块、进程、子程序四、适用范围信号:实体、结构体、程序包变量:定义了变量的进程、子程序的顺序语句中常数:视其定义的位置而定若常数定义在实体中,适用范围是实体所对应的有结构体。若常数定义在结构体中,适用范围就是本结构体。= =1 1= =1 1c c b bx xy y执行结果为:执行结果为: x=c xor b, y=c xor b 执行结果为:执行结果为: x=c xor a, y=c

33、xor b =1=1=1=1c c a ax xy y b 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: integerLibrary StdUse std.standard.allA=“11001101”B=

34、02.4 VHDL 操作符VHDL操作符:逻辑、算术、符号、关系操作符。操作符:逻辑、算术、符号、关系操作符。2.4.1 逻辑运算符一、分类及功能And(与),Or(或),Not(非),Nand(与非),Nor(或非),Xor(异或),Xnor(同或)。A AB BANDANDORORNANDNANDNORNORXORXORXNORXNOR输入输入输出输出运算运算0 00 00 01 11 10 01 11 1Y1Y1Y2Y2Y3Y3Y4Y4Y5Y5Y6Y60 00 00 01 10 01 11 11 11 11 11 10 01 10 00 00 00 01 11 10 01 10 00 0

35、1 1二. 用法1. 操作数的数据类型必须符合操作符的要求能进行逻辑运算的数据类型:bit、bit_vector、booleanstd_logic、std_logic_vector例例Signal a,b,y: std_logic;Signal c,d,z: integer;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

36、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_LOGIC_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_l

37、ogic;tmp= c xor d ;END AA1 ;1 111&abcde2.4.2 关系运算符=(等于),/=(不等于),(大于), =(大于等于)。注1.等于和不等于的操作对象可以是任何数据类型构成的操作数。2.其它关系运算符对数据类型有一定的限制。(整数,枚举型)3. =、 /= 在实现硬件电路时比其它的关系运算符对芯片的利用率 要高ENTITY my1 isPORT(a,b : in bit_vector(0 to 3)m : out boolean ) ;END my1 ;ARCHITECTURE a1 of my1BEGINm=(a = b) ;END a1;ENTIT

38、Y 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 算术运算符一、分类及功能一、分类及功能求和运算符、求积运算符、符号运算符、混合运算符、移位运算符二二. 运用运用1.求和运算符VHDL中的求和运算符包括加减运算和并置运算,操作数的数据类型为整型。例例1:Variable a,b,c,d,e,f : integer range 0 to 25

39、5;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 例:Variable a1 : std_logic_vector(3 to 0);a1 := “1011”;a1 SLL 1 ;a1= 0110a1 SLL 2 ;

40、a1= 1100a1 ROL 1 ;a1= 01113. 其它其它略略二、应用二、应用现在现在VHDLVHDL已成功地应用于已成功地应用于ASICASIC自动设计的模拟验证和综合优化自动设计的模拟验证和综合优化等方面。等方面。VHDLVHDL是以文字的方式设计电路,在应用上,目前是以文字的方式设计电路,在应用上,目前VHDLVHDL语言还仅限于数字电路的开发和设计。语言还仅限于数字电路的开发和设计。 三、三、VHDLVHDL和电路图设计方式比较和电路图设计方式比较VHDLVHDL与电路图设计电路的方式不同,主要有如下几方面与电路图设计电路的方式不同,主要有如下几方面 的优越性:的优越性:(1

41、1)易于修改;)易于修改;(2 2)设计能力更强;)设计能力更强;(3 3)VHDLVHDL语言很方便:独立于器件设计;相同的程序语言很方便:独立于器件设计;相同的程序 代码可以用于不同厂家生产的器件。代码可以用于不同厂家生产的器件。VHDL VHDL 操作符复习回顾操作符复习回顾一、逻辑运算符一、逻辑运算符AndAnd(与),(与),OrOr(或),(或),NotNot(非),(非),NandNand(与非),(与非),NorNor(或非),(或非),XorXor(异或),(异或),XnorXnor(同或)。(同或)。A AB BANDANDORORNANDNANDNORNORXORXORX

42、NORXNOR输入输入输出输出运算运算0 00 00 01 11 10 01 11 1Y1Y1Y2Y2Y3Y3Y4Y4Y5Y5Y6Y60 00 00 01 10 01 11 11 11 11 11 10 01 10 00 00 00 01 11 10 01 10 00 01 1能进行逻辑运算的数据类型:能进行逻辑运算的数据类型:bitbit、bit_vectorbit_vector、booleanbooleanstd_logicstd_logic、std_logic_vectorstd_logic_vector二、关系运算符二、关系运算符= =(等于),(等于),/=/=(不等于),(不等于)

43、, (大于),(大于), = =(大于等于)。(大于等于)。1.1.等于和不等于的操作对象可以是任何数据类型构成的操作数。等于和不等于的操作对象可以是任何数据类型构成的操作数。2.2.其它关系运算符对数据类型有一定的限制。(整数,枚举型)其它关系运算符对数据类型有一定的限制。(整数,枚举型)三、算术运算符三、算术运算符求和运算符求和运算符、求积运算符、符号运算符、混合运算符、求积运算符、符号运算符、混合运算符、移位运算符移位运算符 VHDL VHDL中的求和运算符包括加减运算和并置运算,中的求和运算符包括加减运算和并置运算,操作数的数据类型操作数的数据类型 为整型。为整型。Signal a :

44、 std_logic_vector(4 downto 0);Signal b : std_logic_vector(2 downto 0);Signal c : std_logic_vector(1 downto 0);B2B2 B1B1 B0B0b:b:C1C1 C0C0c:c:b cB2B2 B1B1 B0B0b:b:C1C1 C0C0:c:c B2B2 B1B1 B0B0 C1C1 C0C0a = b cA4A4 A3A3 A2A2 A1A1 A0A0a:a:a:a:B B2 2 B B1 1 B B0 0 C C1 1 C C0 0Variable A : std_logic_vect

45、or(6 downto 0);A := “10110001”;1 10 01 11 10 00 00 01 1A:A:A SLL 1 ;1 10 01 11 10 00 00 01 1A:A:0 01 10 01 11 10 00 00 01 1A:A:0 0A ROL 1 ;1 10 01 11 10 00 00 01 1A:A:1 1 第三章 VHDL顺序语句一、顺序语句概念顺序语句的特点是,每一条顺序语句的执行顺序执行顺序是与它们的书写顺书写顺序序基本一致的。顺序语句只能出现在进程(Process)和子程序中,子程序包括函数(Function)和过程(Procedure)。二、种类 进程

46、语句赋值语句 流程控制语句 等待语句 子程序调用语句 返回语句 空操作语句3.1 进程语句进程语句 (Process 语句)语句)A AB BC CA AB BC CA AA AB BC CB BABCABCC CABCCBA0000输入信号发生变化时,电路启动进行计算输入信号发生变化时,电路启动进行计算A AB BC CY Y1 1Y Y2 2Y Y3 3Y Y4 4Y Yv进程语句是由顺序语句构成的,通过信号与结构体其余部分进行信进程语句是由顺序语句构成的,通过信号与结构体其余部分进行信息交流,在进程中有一个敏感信号列表,表中列出的任何信号的改息交流,在进程中有一个敏感信号列表,表中列出的

47、任何信号的改变都将启动进程,执行进程内相应的顺序语句。进程语句是将并行变都将启动进程,执行进程内相应的顺序语句。进程语句是将并行语句和顺序语句区分开来的标志之一。语句和顺序语句区分开来的标志之一。语法格式: 进程标号: Process (敏感信号列表) Variable declarations -变量声明变量声明 Begin 顺序语句; End Process Process label;Process(sel,x1,x2)Beginf=x1;If sel=1 thenf=x2;end if;End process;Process(sel,x1,x2)BeginIf sel=1 thenf=

48、x2;end if;f=x1;End process;在第二个进程中,无论什么情况,在第二个进程中,无论什么情况,f=x1,而在第一个进程中,而在第一个进程中,只有信号只有信号sel /=1时,时,f=x1。因此,语句的排列顺序很重要,会。因此,语句的排列顺序很重要,会影响信号的输出结果。影响信号的输出结果。3.2 赋值语句赋值语句赋值语句包括变量赋值语句和信号赋值语句,前者的赋值是立刻发生的,赋值语句包括变量赋值语句和信号赋值语句,前者的赋值是立刻发生的,后者的赋值发生在一个进程结束的时刻,并延时进行。后者的赋值发生在一个进程结束的时刻,并延时进行。变量赋值目标变量赋值目标 := 赋值源赋值

49、源信号赋值目标信号赋值目标 = 赋值源赋值源在同一进程中,同一信号赋值目标有多个赋值源时,信号赋值目标获在同一进程中,同一信号赋值目标有多个赋值源时,信号赋值目标获得的是最后一个赋值源的值,其前面相同的赋值目标不做任何变化。得的是最后一个赋值源的值,其前面相同的赋值目标不做任何变化。注:注:3.2.1 信号和变量赋值信号和变量赋值Signal s1,s2 : std_logic ;Signal sec : std_logic_vector(0 to 7);Process (s1 , s2)Variable v1,v2 : std_logic;Begin v1 := 1; v2 := 1 ;s1

50、 = 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;注:注:一位值

51、用单引号,多位值用双引号一位值用单引号,多位值用双引号2. 段赋值段赋值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语句语句语法格式:语法格式:If expression Th

52、enstatement;Elsif expression Thenstatement;Elsif Thenstatement;elsestatement;End if;根据条件进行相应赋值操作例例1:A1A1A2A2Y Y0 00 00 01 11 10 01 11 1D0D0D1D1D2D2D3D3A1A1A2A2D0D0D1D1D2D2D3D3Y Y四选一数四选一数据选择器据选择器Process(A)BeginIf A=”00” then f=D0; elsif A=”01” then f=D1; elsif A=”10” then f=D2; else fb ) THEN outb )

53、THEN out= 1;ELSEout=0;END IF;三、第三种三、第三种IF语句语句语法格式:语法格式:If 条件句条件句 Then顺序语句顺序语句;Elsif 条件句条件句 Then顺序语句顺序语句; Elsif 条件语句条件语句Then顺序语句顺序语句;else顺序语句顺序语句;End if;语句格式例题例题1:Signal a,b,c,p1,p2,z : bit;IF (p1=1) THENz =a;ELSIF (p2=0) THENz = b;ELSEz = c;END IF;?选择方式选择方式P P1 1P P2 2Z Z0 00 00 01 11 10 01 11 1cbaa

54、画线部分意思:画线部分意思:ELSIF (p1=0 and p2=0)注注例题例题2:8线线3线优先编码器线优先编码器编编码码器器I I0 0I I1 1I I2 2I I3 3I I4 4I I5 5I I6 6I I7 7Y Y2 2Y Y1 1Y Y3 3I7 7 I6 6 I5 5 I4 4 I3 3 I2 2 I1 1 I0 0 Y3 Y3 Y2 Y2 Y1 Y11 11 11 11 10 01 11 11 10 00 00 01 11 10 01 10 00 00 01 11 10 00 00 00 00 00 01 10 01 11 10 00 00 00 00 01 10 01

55、 10 00 00 00 00 00 00 01 10 00 01 10 00 00 00 00 00 00 01 10 00 00 0LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;ENTITY coder ISPORT(I : IN STD_LOGIC_VECTOR(0 TO 7)Y: OUT STD_LOGIC_VECTOR(1 TO 3);END coder ;编编码码器器I I0 0I I1 1I I2 2I I3 3I I4 4I I5 5I I6 6I I7 7Y Y2 2Y Y1 1Y Y3 3实实 体体 设设 计计功能:设计元件外观功能:设

56、计元件外观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”;A7 A7 A6 A6 A5 A5 A4 A4 A3 A3 A2 A2 A1 A1 A0 A0 Y3 Y3 Y2

57、 Y2 Y1 Y11 11 11 11 10 01 11 11 10 00 00 01 11 10 01 10 00 00 01 11 10 00 00 00 00 00 01 10 01 11 10 00 00 00 00 01 10 01 10 00 00 00 00 00 00 01 10 00 01 10 00 00 00 00 00 00 01 10 00 00 0END a1;结结 构构 体体 设设 计计功能:描述输入和输出之间的逻辑关系功能:描述输入和输出之间的逻辑关系END IF;练习题:练习题: 设计一个设计一个3线线8线译码器线译码器A1 A2 A3 Y7 Y6 Y5 Y4

58、 Y3 Y2 Y1 Y00000000000100100000010010000001000110000100010000010000101001000001100100000011110000000A A 1 1A A 2 2A A 3 3Y Y 1 1Y Y 2 2Y Y 3 3Y Y 4 4Y Y 5 5Y Y 6 6Y Y 0 0Y Y 7 73 3线线 8 8线线 译译 码码 器器元件外观元件外观输入输出逻辑关系输入输出逻辑关系LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;ENTITY coder ISPORT(A : IN STD_LOGIC_

59、VECTOR(1 TO 3)Y: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END coder ;实实 体体 设设 计计功能:设计元件外观功能:设计元件外观A A1 1A A2 2A A3 3Y Y1 1Y Y2 2Y Y3 3Y Y4 4Y Y5 5Y Y6 6Y Y0 0Y Y7 73 3线线 8 8线线 译译 码码 器器ARCHITECTURE a1 or coder ISBegin IF A=“000” THEN Y=“00000001”;ELSIF A=“001” THEN Y=“00000010”;ELSIF A=“010” THEN Y=“00000100

60、”;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”注注例题例题1: 用用CASE语句设计四选一数据选择器语句设计四选一数据选择器 s s1 1s s2 2a ab bc cd dz zM MU UX X4 41 1s s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论