(好)初步设计_第1页
(好)初步设计_第2页
(好)初步设计_第3页
(好)初步设计_第4页
(好)初步设计_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

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

文档简介

1、v原理图输入与 VHDL文本输入设计的区别Graphic is what you draw is what you getv“ tell me what hardware you want and I will give it to you”VHDL is what you write is what functional you getv“ tell me how your circuit should behave and the VHDL compiler will give you the hardware that does the job”v but the designer ca

2、n not control how the circuit implement什么是VHDL? Very high speed integrated Hardware Description Language (VHDL)是IEEE、工业标准硬件描述语言用语言的方式而非图形等方式描述硬件电路v容易修改v容易保存特别适合于设计的电路有:v复杂组合逻辑电路,如: 译码器、编码器、加减法器、多路选择器、地址译码器.v状态机v等等.VHDL的功能和标准的功能和标准v VHDL 描述输入端口输出端口电路的行为和功能vVHDL有过两个标准:IEEE Std 1076-1987 (called VHDL 1

3、987)IEEE Std 1076-1993 (called VHDL 1993)【例5-1】ENTITY mux21a IS PORT( a, b : IN BIT ; s : IN BIT; y : OUT BIT ) ;END ENTITY mux21a ;ARCHITECTURE one OF mux21a IS BEGIN y = a WHEN s = 0 ELSE b ;END ARCHITECTURE one ;实体结构体5.1 多路选择器多路选择器VHDL描述描述5.1.1 2选选1多路选择器的多路选择器的VHDL描述描述5.1.1 2选选1多路选择器的多路选择器的VHDL描述

4、描述【例例5-2】 ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT ); END ENTITY mux21a;ARCHITECTURE one OF mux21a IS SIGNAL d,e : BIT; BEGINd = a AND (NOT S) ;e = b AND s ;y = d OR e ; END ARCHITECTURE one ;【例【例5-3】 . . . ARCHITECTURE one OF mux21a IS BEGIN y = (a AND (NOT s) OR (b AND s) ; E

5、ND ARCHITECTURE one;5.1.1 2选选1多路选择器的多路选择器的VHDL描述描述【例【例5-4】 ENTITY mux21a IS PORT ( a, b, s: IN BIT; y : OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN PROCESS (a,b,s) BEGIN IF s = 0 THEN y = a ; ELSE y = b ;END IF; END PROCESS;END ARCHITECTURE one ;5.1.1 2选选1多路选择器的多路选择器的VHDL描述描述图图5-

6、3 mux21a功能时序波形功能时序波形5.1.2 VHDL相关语句说明相关语句说明1. 1. 实体表达实体表达ENTITY e_name IS PORT ( p_name : port_m data_type; . p_namei : port_mi data_type );END ENTITY e_name;或:或:ENTITY e_name IS PORT ( p_name : port_m data_type; . p_namei : port_mi data_type );END e_name;5.1.2 VHDL相关语句说明相关语句说明2. 2. 实体名实体名3. 3. PORT语

7、句和端口信号名语句和端口信号名4. 4. 端口模式端口模式5. 5. 数据类型数据类型BITINOUTINOUTBUFFER5.1.2 VHDL相关语句说明相关语句说明6. 6. 结构体表达结构体表达ARCHITECTURE arch_name OF e_name IS (说明语句说明语句)BEGIN (功能描述语句功能描述语句)END ARCHITECTURE arch_name ;或:或:ARCHITECTURE arch_name OF e_name IS (说明语句说明语句)BEGIN (功能描述语句功能描述语句)END arch_name ;7. 7. 信号传输信号传输( (赋值赋值

8、) )符号和数据比较符号符号和数据比较符号8. 逻辑操作符逻辑操作符AND、OR、NOT9. IF_THEN条件语句条件语句10. WHEN_ELSE条件信号赋值语句条件信号赋值语句赋值目标赋值目标 = 表达式表达式 WHEN 赋值条件赋值条件 ELSE 表达式表达式 WHEN 赋值条件赋值条件 ELSE . 表达式表达式 ;11. PROCESS进程语句和顺序语句进程语句和顺序语句12. 12. 文件取名和存盘文件取名和存盘5.1.3 VHDL设计的基本概念和语句小节设计的基本概念和语句小节数据类型信号赋值符条件比较符 延时实体结构体端口定义端口模式逻辑操作符IF条件语句并行条件语句进程语句

9、顺序语句并行语句文件取名文件存盘5.2 寄存器描述及其寄存器描述及其VHDL语言现象语言现象5.2.1 D触发器的触发器的VHDL描述描述【例5-9】LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1 : STD_LOGIC ; -类似于在芯片内部定义一个数据的暂存节点 BEGIN PROCESS (CLK)

10、BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; Q = Q1 ; -将内部的暂存数据向端口输出 END PROCESS ; END bhv;D触发器触发器运算符加载注意,信号注意,信号端口模式和端口模式和数据类型的数据类型的改变!改变!注意,引注意,引进内部信进内部信号矢量!号矢量!用用VHDL设计设计4位计数器位计数器4位锁存器位锁存器组合电路加组合电路加1器器锁存信号锁存信号输出反馈输出反馈用用VHDL设计设计7段段16进制译码器进制译码器用用CASE语句完成真值表的功能语句完成真值表的功能向向7段数码段数码管输出信号,管输出信号,最

11、高位控制最高位控制小数点小数点注意,此语句必须加入注意,此语句必须加入4位加法位加法计数器计数器7段译码器段译码器8位总线输出位总线输出信信号号输输出出数据对象:信号Signal 和变量 VariablevSignal Assignmentreceive the assign value after a period of timevVariable Assignmenthappens immediately when the statement is executed, no delayRepresent CircuitRepresent local storageInterconnectG

12、lobal Scope (anywhere)Local Scope(inside process)Updated at end of PROCESSUpdated Immediately(new value not available)(new value available) SIGNALSVARIABLES UTILITY: SCOPE:BEHAVIOR:例例1 四选一多路选择器设计四选一多路选择器设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 ISPORT (i0, i1, i2, i3, a, b : IN STD_LOGI

13、C; q : OUT STD_LOGIC);END mux4;ARCHITECTURE body_mux4 OF mux4 ISsignal muxval : integer;BEGINprocess(i0,i1,i2,i3,a,b)beginmuxval = 0;if (a = 1) then muxval = muxval + 1;end if;if (b = 1) then muxval q q q q null;end case;end process; END body_mux4;Why ?LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY

14、 mux4 ISPORT (i0, i1, i2, i3, a, b : IN STD_LOGIC; q : OUT STD_LOGIC);END mux4;ARCHITECTURE body_mux4 OF mux4 ISBEGINprocess(i0,i1,i2,i3,a,b)variable muxval : integer range 0 to 3;beginmuxval := 0;if (a = 1) then muxval := muxval + 1;end if;if (b = 1) then muxval := muxval + 2;end if;case muxval is

15、when 0 = q q q q null;end case;end process; END body_mux4;LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a,b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE fh1 OF h_adder IBEGIN so = (a OR b)AND(a NAND b); co = NOT( a NAND b); END ARCHITECTURE fh1;例例2 一

16、位全加器设计一位全加器设计1位二进制半加器位二进制半加器1位二进制全加器位二进制全加器内部端口外部端口端口连线5.2.2 D触发器触发器VHDL描述的语言现象说明描述的语言现象说明1. 1. 标准逻辑位数据类型标准逻辑位数据类型STD_LOGICBIT数据类型定义: TYPE BIT IS(0,1);STD_LOGIC数据类型定义:TYPE STD_LOGICIS(U,X,0,1,Z,W,L,H,-);TYPE STD_LOGICIS(U,X,0,1,Z,W,L,H,-);STD_LOGIC所定义的9种数据的含义是:U表示未初始化的;表示未初始化的; X表示强未知的;表示强未知的; 0表示强逻

17、辑表示强逻辑0; 1表示强逻辑表示强逻辑1; Z表示高阻态;表示高阻态; W 表示弱未知的;表示弱未知的; L表示弱逻辑表示弱逻辑0; H表示弱逻辑表示弱逻辑1; -表示忽略表示忽略。2. 2. 设计库和标准程序包设计库和标准程序包3. SIGNAL信号定义和数据对象信号定义和数据对象【例【例5-10】ARCHITECTURE bhv OF DFF1 IS BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q = D ; END IF; END PROCESS ;END ;使用库和程序包的一般定义表式是: LIBRARY LIBRAR

18、Y ; USE USE .ALL ; ALL ; 5.2.2 D触发器触发器VHDL描述的语言现象说明描述的语言现象说明4. 4. 上升沿检测表式和信号属性函数上升沿检测表式和信号属性函数EVENTEVENT 关键词EVENT是信号属性,VHDL通过以下表式来测定某信号的跳变边沿: EVENTEVENT5. 5. 不完整条件语句与时序电路不完整条件语句与时序电路【例【例5-11】ENTITY COMP_BAD IS PORT( a1 : IN BIT;b1 : IN BIT;q1 : OUT BIT ); END ; ARCHITECTURE one OF COMP_BAD IS BEGIN

19、PROCESS (a1,b1) BEGIN IF a1 b1 THEN q1 = 1 ; ELSIF a1 b1 THEN q1 b1 THEN q1 = 1 ; ELSE q1 = 0 ; END IF; END PROCESS ; END 5.2.3 实现时序电路的实现时序电路的VHDL不同表达方式不同表达方式【例【例5-13】.PROCESS (CLK) BEGINIF CLKEVENT AND (CLK=1) AND (CLKLAST_VALUE=0) THEN Q = D ; -确保确保CLK的变化是一次上升沿的跳变的变化是一次上升沿的跳变 END IF; END PROCESS ;

20、【例【例5-14】.PROCESS (CLK) BEGINIF CLK=1 AND CLKLAST_VALUE=0 -同例同例5-13 THEN Q = D ; END IF; END PROCESS ;【例【例5-15】LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY DFF3 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF3 IS SIGNAL Q1 : STD_LOGIC; BEGIN P

21、ROCESS (CLK) BEGIN IF rising_edge(CLK) - CLK的数据类型必须是的数据类型必须是STD_LOGIC THEN Q1 = D ; END IF; Q = Q1 ; END PROCESS ; END ;【例5-16】 . PROCESS BEGIN wait until CLK = 1 ; -利用利用wait语句语句 Q = D ; END PROCESS;【例5-17】. PROCESS (CLK) BEGIN IF CLK = 1 THEN Q = D ;-利用进程的启动特性产生对利用进程的启动特性产生对CLK的边沿检测的边沿检测 END IF; EN

22、D PROCESS ;【例5-18】. PROCESS (CLK,D) BEGIN IF CLK = 1 -电平触发型寄存器电平触发型寄存器 THEN Q = D ; END IF; END PROCESS ;图图5-7 边沿型触发器时序波形边沿型触发器时序波形图图5-8 电平触发型寄存器的时序波形电平触发型寄存器的时序波形5.2.4 异步时序电路设计异步时序电路设计【例例5-19】. ARCHITECTURE bhv OF MULTI_DFF IS SIGNAL Q1,Q2 : STD_LOGIC; BEGINPRO1: PROCESS (CLK) BEGIN IF CLKEVENT AND

23、 CLK=1 THEN Q1 = NOT (Q2 OR A); END IF; END PROCESS ;PRO2:PROCESS (Q1) BEGIN IF Q1EVENT AND Q1=1 THEN Q2 = D; END IF; QQ = Q2 ; END PROCESS ; 图图5-9 例例5-19综合的电路综合的电路5.2.5 VHDL设计基本概念和语言现象小节设计基本概念和语言现象小节数据类型数据对象信号属性时钟检测VHDL库程序包时序电路异步时序5.3 1位二进制全加器的位二进制全加器的VHDL设计设计图图5-10半加器半加器h_adder电路图电路图图图5-11 全加器全加器f

24、_adder电路图电路图5.3.1 半加器描述和半加器描述和CASE语句语句absoco0000011010101101表表5-1 半加器半加器h_adder逻辑功能真值表逻辑功能真值表1. 1. CASE语句语句CASE语句的一般表式是:语句的一般表式是:CASE ISWhen = ; . ; ;When = ; . ; ;.END CASE ;2. 标准逻辑矢量数据类型标准逻辑矢量数据类型STD_LOGIC_VECTOR3. 3. 并置操作符并置操作符 以下是一些并置操作示例:以下是一些并置操作示例:SIGNAL a : STD_LOGIC_VECTOR (3 DOWNTO 0) ;SIG

25、NAL d : STD_LOGIC_VECTOR (1 DOWNTO 0) ; .a = 1 0 d(1) 1 ; - 元素与元素并置,并置后的数组长度为元素与元素并置,并置后的数组长度为4 .IF a d = 101011 THEN . - 在在IF条件句中可以使用并置符条件句中可以使用并置符 在使用STD_LOGIC_VECTOR中,必须注明其数组宽度,即位宽,如: B : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ; 或或 SIGNAL A :STD_LOGIC_VECTOR(1 TO 4)【例【例5-20】 LIBRARY IEEE ;-或门逻辑描述或门逻辑描述

26、 USE IEEE.STD_LOGIC_1164.ALL; ENTITY or2a IS PORT (a, b :IN STD_LOGIC; c : OUT STD_LOGIC ); END ENTITY or2a; ARCHITECTURE one OF or2a IS BEGIN c = a OR b ; END ARCHITECTURE fu1;【例【例5-21】LIBRARY IEEE; -半加器描述半加器描述(1)USE IEEE.STD_LOGIC_1164.ALL; ENTITY adder IS PORT (a, b : IN STD_LOGIC; co, so : OUT S

27、TD_LOGIC); END ENTITY adder; ARCHITECTURE fh1 OF adder is BEGIN so = NOT(a XOR (NOT b) ; co = a AND b ; END ARCHITECTURE fh1; 【例5-22】LIBRARY IEEE; -半加器描述半加器描述(2)USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE fh1 OF

28、h_adder is SIGNAL abc : STD_LOGIC_VECTOR(1 DOWNTO 0) ;BEGIN abc so=0; co so=1; co so=1; co so=0; co NULL ; END CASE; END PROCESS;END ARCHITECTURE fh1 ;【例【例5-22】 . -半加器描述半加器描述(3) SIGNAL abc,cso : STD_LOGIC_VECTOR(1 DOWNTO 0 ); BEGIN abc = a&b ; co = cso(1) ; so cso cso cso csoain,b=bin,co=d,so=e)

29、; u2 : h_adder PORT MAP(a=e, b=cin, co=f,so=sum); u3 : or2a PORT MAP(a=d, b=f, c=cout); END ARCHITECTURE fd1;5.3.2 全加器描述和例化语句全加器描述和例化语句 元件例化语句由两部分组成,第一部分是对一个现成的设计实体定元件例化语句由两部分组成,第一部分是对一个现成的设计实体定义为一个元件,语句的功能是对待调用的元件作出调用声明,它的最义为一个元件,语句的功能是对待调用的元件作出调用声明,它的最简表达式如下所示:简表达式如下所示: COMPONENT 元件名元件名 IS PORT (端

30、口名表端口名表) ; END COMPONENT 文件名文件名 ; 元件例化语句的第二部分则是此元件与当前设计实体元件例化语句的第二部分则是此元件与当前设计实体(顶层文件顶层文件)中中元件间及端口的连接说明。语句的表达式如下:元件间及端口的连接说明。语句的表达式如下: 例化名例化名 : 元件名元件名 PORT MAP( 端口名端口名 = 连接端口名连接端口名,.);STEP1:建立 工作库文件夹STEP2:输入设计项目原理图/VHDL文本代码STEP3:存盘,注意 原理图/文本取名STEP4:将设计项目设置成Project STEP11: 硬件测试STEP8:仿真测 试和波形分析STEP7:建立仿真波形文件STEP6:启动编译STEP5:选择目标器件STEP10:编程 下载/配置STEP9:引脚锁定并编译VHDL文本输入设计流程 5.4 VHDL文本输入设计方法初步文本输入设计方法初步为设计全加器新建一个文件夹作工作库文件夹名取为My_prjct注意,不可用中文!编辑输入并保存编辑输入并保存VHDL源文件源文件新建一个设计文件使用文本输入方法设计,必须选择打开文本编辑器在文本编辑窗中输入在文本编辑窗中输入VHDL文件并存盘文件并存盘文本编辑窗用键盘输入设计文件:多路选择器存盘文件名必须取为:mux21a.vhd注意,要存在自己建

温馨提示

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

评论

0/150

提交评论