第4章 应用VHDL设计数字系统

上传人:gu****n 文档编号:243147274 上传时间:2024-09-16 格式:PPT 页数:83 大小:710KB
返回 下载 相关 举报
第4章 应用VHDL设计数字系统_第1页
第1页 / 共83页
第4章 应用VHDL设计数字系统_第2页
第2页 / 共83页
第4章 应用VHDL设计数字系统_第3页
第3页 / 共83页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,EDA,技术及其应用,第,4,章 应用,VHDL,设计数字系统,推荐参考书,推荐参考书:,VHDL,数字电路设计教程(,Ciruit,Design with VHDL,),,Volnei,A.,Pedroni,著,乔庐峰 王志功 等译;,VHDL,实用教程,成电,潘松,VHDL,硬件描述语言的基本介绍,VHDL,:,Very-High-Speed-Integrated-Circuit Hardware Description Language,。即超高速集成电路硬件描述语言。,VHDL,的功能:,通过用,VHDL,硬件描述语言编程,从而利用,PLD,器件(,Programmable Logic Device,可编程逻辑器件,包括,PAL,、,GAL,、,CPLD,和,FPGA,器件等)完成某种数字逻辑电路的设计。,除了,VHDL,这种硬件描述语言以外,还有几种比较著名的硬件描述语言,HDL,(,Hardware Description Language,),比如:,ABEL,,,AHDL,和,VerilogHDL,,,其中,VHDL,和,VerilogHDL,都已成为,IEEE,标准,在我国和欧美得到了广泛使用。而,ABEL,正朝国际化标准努力,支持,ABEL,的开发系统比较少。,AHDL,是,Altera,公司开发的,硬件描述语言。,4.1,多路选择器的,VHDL,描述,4.1.1,多路选择器的,VHDL,描述,图,4-1 mux21a,实体 图,4-2 mux21a,结构体,4.1,多路选择器的,VHDL,描述,4.1.1,多路选择器的,VHDL,行为描述,【,例,4-3】,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 ;,4.1,多路选择器的,VHDL,描述,4.1.1,多路选择器的,VHDL,行为描述,【,例,4-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 ;,4.1,多路选择器的,VHDL,描述,4.1.1,多路选择器的,VHDL,数据流描述,【,例,4-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,;,BEGIN,d = a,AND,(,NOT,S) ;,e = b,AND,s ;,y = d,OR,e ;,END,ARCHITECTURE,one ;,d,e,4.1,多路选择器的,VHDL,描述,4.1.1,多路选择器的,VHDL,描述,图,4-3 mux21a,功能时序波形,4.1,多路选择器的,VHDL,描述,4.1.2,语句结构和语法说明,1.,实体表达,【,例,4-4】,ENTITY,e_name,IS,PORT,(,p_name_1 :,port_type,data_,type,;,.,p_name_n :,port_type,data_,type,);,END,ENTITY,e_name,;,4.1,多路选择器的,VHDL,描述,4.1.2,语句结构和语法说明,2.,实体名,3.,端口语句和端口信号名,4.,端口模式,输入(,IN,),;,输出(,OUT,),;,双向模式(,INOUT,),;,缓冲(,BUFFER,),4.1,多路选择器的,VHDL,描述,6.,结构体表达,【,例,4-5】,ARCHITECTURE,arch_name,OF,e_name,IS,说明语句,BEGIN,(,功能描述语句,),END,ARCHITECTURE,arch_name,;,5.,数据类型,整型,INTEGER,,布尔型,BOOLEAN,,标准逻辑型,STD_LOGIC,,比特型,BIT,,等,BIT,型取值为,1,或,0,,注意不能写成:,1,,,0,,这样是,INTEGER,型,4.1,多路选择器的,VHDL,描述,7.,赋值符号和数据比较符号,赋值:,y 1,,,a=1,,,a=1,常用于条件语句:,IF(a,=1) THEN . -,注意,,(),中的数据类型必须是,BOOLEAN,8.,逻辑操作符,AND,,,OR,,,NOT,,,NAND,,,NOR,,,XOR,,,XNOR,,,只能对,BIT,型、,BOOLLEAN,型和,STD_LOGIC,型使用,9.,条件语句,IF,条件,THEN,顺序语句,;,END,IF,;,4.1,多路选择器的,VHDL,描述,10. WHEN_ELSE,条件信号赋值语句,赋值目标,=,表达式,WHEN,赋值条件,ELSE,表达式,WHEN,赋值条件,ELSE,.,表达式 ;,z = a WHEN p1 = 1 ELSE,b WHEN p2 = 1 ELSE,c ;,4.1,多路选择器的,VHDL,描述,11.,进程语句和顺序语句,PROCESS,(,敏感信号列表,),顺序语句;,END PROCESS,IF,条件,THEN,顺序语句,;,END,IF,;,就是一种顺序语句,每个,VHDL,程序中可以同时包含多个,PROCESS,进程语句,所有的进程语句都分别对应电路中的一个模块,所有进程语句之间是,“并行运行”,的。,但是进程语句内部的顺序语句是按先后顺序来运行的。,12.,文件取名和存盘,文件名必须与实体名一致,文件后缀必须是,VHD,,不分大小写。,4.2,寄存器描述的,VHDL,程序,4.2.1 D,触发器的描述,图,4-4 D,触发器,4.2,寄存器描述的,VHDL,程序,【,例,4-6】,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) -,因为进程中要读取,CLK,,所以应放在敏感信号列表中,BEGIN,IF,CLK,EVENT,AND,CLK = 1,THEN,Q1,=,D ;,END,IF,;,END,PROCESS,;,Q,=,Q1 ; -,将内部的暂存数据向端口输出(双横线,-,是注释符号),END,bhv,;,4.2,寄存器描述的,VHDL,程序,【,例,4-6】,或者还可以这样描述,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,BEGIN,PROCESS,(CLK) -,因为进程中要读取,CLK,,所以应放在敏感信号列表中,VARIABLE,Q1 :,STD_LOGIC,; -,定义一个变量,类似芯片内一个数据暂存点,BEGIN,IF,CLK,EVENT,AND,CLK = 1,THEN,Q1,:=,D ;,END,IF,;,Q,=,Q1 ; -,将内部的暂存数据向端口输出(双横线,-,是注释符号),END,PROCESS,;,END,bhv,;,4.2,寄存器描述的,VHDL,程序,4.2.2 VHDL,描述的语言现象说明,1.,标准逻辑位数据类型,STD_LOGIC,BIT,数据类型定义:,TYPE BIT IS(0,1); -,只有两种取值,STD_LOGIC,数据类型定义:,TYPE STD_LOGIC IS (U,X,0,1,Z,W,L,H,-);,因为,STD_LOGIC,类型包括了,BIT,类型的取值,而且范围更广泛,所以一般设计电路时,多使用,STD_LOGIC,类型,,而,很少使用,BIT,类型,4.2,寄存器描述的,VHDL,程序,4.2.2 VHDL,描述的语言现象说明,2.,设计库和标准程序包,LIBRARY WORK ;,LIBRARY STD ;,USE STD.STANDARD.ALL ;,BIT,类型在,STD,库中定义,,由于,STD,库和,WORK,是自动打开的,所以使用,BIT,类型可以不用先说明,STD,库和程序包,STANDARD,LIBRARY ;,USE .ALL ;,LIBRARY IEEE ;,USE IEEE.STD_LOGIC_1164.ALL ;,STD_LOGIC,类型在,IEEE,库中定义,由于,IEEE,库不是标准库,系统不能自动打开,所以使用,STD_LOGIC,类型一定要先说明,IEEE,库和相应的程序包,STD_LOGIC_1164,4.2,寄存器描述的,VHDL,程序,4.2.2 VHDL,描述的语言现象说明,3.,信号定义和数据对象,4.,上升沿检测表达式和信号属性函数,EVENT,5.,不完整条件语句与时序电路,不完整条件语句是描述时序电路的关键,ARCHITECTURE,bhv,OF,DFF1,IS,SIGNAL,Q1 :,STD_LOGIC,; -,定义一个信号,类似芯片内一个数据暂存点,BEGIN,PROCESS,(CLK) -,因为进程中要读取,CLK,,所以应放在敏感信号列表中,BEGIN,IF,CLK,EVENT,AND,CLK = 1,THEN,Q1 = D ;,END,IF,;,END,PROCESS,;,Q b1,THEN,q1 = 1 ;,ELSIF,a1 b1,THEN -,注意写法,不是,ELSEIF,q1 b1,THEN,q1 = 1 ;,ELSE,q1 = 0 ;,END,IF,;,.,4.2,寄存器描述的,VHDL,程序,4.2.2 VHDL,描述的语言现象说明,5.,不完整条件语句与时序电路,图,4-6,例,4-8,的电路图(,Synplify,综合),4.2,寄存器描述的,VHDL,程序,4.2.3,实现时序电路的不同表述,【,例,4-9】,.,PROCESS,(CLK),BEGIN,IF,CLK,EVENT,AND,(CLK=1),AND,(CLK,LAST_VALUE,=0),THEN,Q = D ; -,确保,CLK,的变化是一次上升沿的跳变,END,IF,;,END,PROCESS,;,4.2,寄存器描述的,VHDL,程序,4.2.3,实现时序电路的不同表述,【,例,4-10】,.,PROCESS,(CLK),BEGIN,IF,CLK=1,AND,CLK,LAST_VALUE,=0,THEN,Q = D ;,END,IF,;,END,PROCESS,;,4.2,寄存器描述的,VHDL,程序,【,例,4-11】,LIBRARY,IEEE,;,USE IEEE.STD_LOGIC_1164.ALL,;,ENTITY,DFF3,IS,PORT,(,CLK,,,D :,IN,STD_LOGIC,;,Q :,OUT,STD_LOGIC,);,END,;,ARCHITECTURE,bhv,OF,DFF3,IS,SIGNAL,Q1 :,STD_LOGIC,;,BEGIN,PROCESS,(CLK),BEGIN,IF,RISING_EDGE,(CLK),THEN,-,必须打开,STD_LOGIC_1164,程序包,Q1 = D ;,END,IF,;,END,PROCESS,;,Q = Q1 ; -,在此,赋值语句可以放在进程外,作为并行赋值语句,END,;,4.2,寄存器描述的,VHDL,程序,4.2.3,实现时序电路的不同表述,【,例,4-12】,.,PROCESS,BEGIN,WAIT,UNTIL,CLK = 1 ; -,利用,wait,语句,Q = D ;,END,PROCESS,;,VHDL,要求,当进程中使用了,WAIT,语句后,就不必列出敏感信号。,4.2,寄存器描述的,VHDL,程序,4.2.3,实现时序电路的不同表述,【,例,4-13】,.,PROCESS,(CLK),BEGIN,IF,CLK = 1,THEN,Q = D ; -,利用进程的启动特性产生对,CLK,的边沿检测,END,IF,;,END,PROCESS,;,图,4-7,例,4-13,的时序波形,4.2,寄存器描述的,VHDL,程序,4.2.3,实现时序电路的不同表述,【,例,4-14】,.,PROCESS,(CLK,,,D),BEGIN,IF,CLK = 1,THEN,-,电平触发型寄存器,Q = D ;,END,IF,;,END,PROCESS,;,图,4-8,例,4-14,的时序波形,4.2,寄存器描述的,VHDL,程序,4.2.4,异步时序电路设计,【,例,4-15】,.,ARCHITECTURE,bhv,OF,MULTI_DFF,IS,SIGNAL,Q1,Q2 :,STD_LOGIC,;,BEGIN,PRO1:,PROCESS,(CLK),BEGIN,IF,CLK,EVENT,AND,CLK=1,THEN,Q1 =,NOT,(Q2,OR,A);,END,IF,;,END,PROCESS,;,PRO2:,PROCESS,(Q1),BEGIN,IF,Q1,EVENT,AND,Q1=1,THEN,Q2 = D;,END,IF,;,END,PROCESS,;,QQ = Q2 ;,.,异步电路必须使用多个时钟进程语句来构成,每个进程使用不同的时钟信号;,一个时钟进程语句只能构成对应单一时钟信号的时序电路。,4.2,寄存器描述的,VHDL,程序,4.2.4,异步时序电路设计,前一级触发器的输出是后一级触发器的时钟信号,这样所有的触发器不是同时翻转,所以叫做“,异步时序电路,”,图,4-9,例,4-15,综合后的电路(,Synplify,综合),4.2,寄存器描述的,VHDL,程序,4.2.4,请对比:同步时序电路设计,【,例,4-15】,.,ARCHITECTURE,bhv,OF,MULTI_DFF,IS,SIGNAL,Q1,Q2 :,STD_LOGIC,;,BEGIN,PRO1:,PROCESS,(CLK),BEGIN,IF,CLK,EVENT,AND,CLK=1,THEN,Q1 =,NOT,(Q2,OR,A);,END,IF,;,END,PROCESS,;,PRO2:,PROCESS,(CLK),BEGIN,IF,CLK,EVENT,AND,CLK=1,THEN,Q2 = D;,END,IF,;,END,PROCESS,;,QQ = Q2 ;,.,4.3 1,位全加器的,VHDL,描述,VHDL,语言的结构化描述,4.3.1,半加器描述,图,4-11,全加器,f_adder,电路图及其实体模块,4.3 1,位全加器的,VHDL,描述,4.3.1,半加器描述,图,4-10,半加器,h_adder,电路图及其真值表,4.3 1,位全加器的,VHDL,描述,4.3.1,半加器描述,【,例,4-16】,LIBRARY,IEEE,; -,半加器描述,(1),:布尔方程描述方法,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,IS,BEGIN,so =,NOT,(a,XOR,(,NOT,b) ;,co = a,AND,b ;,END,ARCHITECTURE,fh1;,4.3 1,位全加器的,VHDL,描述,4.3.1,半加器描述,图,4-11,全加器,f_adder,电路图及其实体模块,【,例,4-17】,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,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 ;,4.3 1,位全加器的,VHDL,描述,4.3.1,或门逻辑描述,【,例,4-18】,LIBRARY,IEEE,; -,或门逻辑描述,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 ,ain,,,b=bin,,,co=d,,,so=e); -,元件例化语句,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;,4.3 1,位全加器的,VHDL,描述,1. CASE,语句,CASE,IS,WHEN, = ; . ; ,;,WHEN, = ; . ; ,;,.,WHEN,OTHERS,= ;,END,CASE,;,WHEN OTHERS = ;,总结:,4.3 1,位全加器的,VHDL,描述,2.,标准逻辑矢量数据类型,描述端口:,B :,OUT,STD_LOGIC_VECTOR,(7,DOWNTO,0),;,描述信号:,SIGNAL,A,:,STD_LOGIC_VECTOR,(1,TO,4),B = 01100010 ; - B(7),为,0,B(4 DOWNTO 1) = 1101 ; - B(4),为,1,B(7 DOWNTO 4) = A ; - B(6),等于,A(2),SIGNAL C,:,BIT_VECTOR(3 DOWNTO 0),;,总结:,4.3 1,位全加器的,VHDL,描述,3.,并置操作符,SIGNAL a :,STD_LOGIC_VECTOR,(3,DOWNTO,0) ;,SIGNAL d :,STD_LOGIC_VECTOR,(1,DOWNTO,0) ;,.,a ,连接端口名,.);,总结:,4.3 1,位全加器的,VHDL,描述,总结:,5.,电路设计中利用,VHDL,语言的描述方法 :, 行为描述方法,例如:,IF s = 0 THEN y = a ; ELSE y = b ; END IF;,或者:,y = a WHEN s = 0 ELSE b ;, 数据流描述方法,例如:,d = a AND (NOT S) ; e = b AND s ; y ,ain,,,b=bin,,,co=d,,,so=e);,u2 :,h_adder,PORT,MAP(a,=e,,,b=,cin,,,co=f,,,so=sum);,u3 : or2a PORT,MAP(a,=d,,,b=f,,,c=,cout,);,4.4,计数器设计,【,例,4-20】,上一个程序相当于:,D,触发器,+,加法器 的结构,ENTITY,CNT4,IS,PORT,( CLK :,IN,BIT,;,Q :,OUT,INTEGER,RANGE,15,DOWNTO,0 ) ;,END,;,ARCHITECTURE,bhv,OF,CNT4,IS,SIGNAL,D,Q1 :,INTEGER,RANGE,15,DOWNTO,0;,BEGIN,PROCESS,(CLK) -D,触发器,BEGIN,IF,CLK,EVENT,AND,CLK = 1,THEN,Q1 = D ; -VHDL,要求赋值符号两边数据类型要一致,END,IF,;,END,PROCESS,;,D = Q1 + 1; -,加法器,Q = Q1;,END,bhv,;,4.4,计数器设计,【,例,4-20】,最好这样描述,ENTITY,CNT4,IS,PORT,( CLK :,IN,BIT,;,Q :,OUT,INTEGER,RANGE,15,DOWNTO,0 ) ;,END,;,ARCHITECTURE,bhv,OF,CNT4,IS,SIGNAL,Q1 :,INTEGER,RANGE,15,DOWNTO,0;,BEGIN,PROCESS,(CLK),BEGIN,IF,CLK,EVENT,AND,CLK = 1,THEN,Q1 =,Q1,+ 1 ; -VHDL,要求赋值符号两边数据类型要一致,END,IF,;,END,PROCESS,;,Q = Q1;,END,bhv,;,4.4,计数器设计,【,例,4-20】,不建议使用,BUFFER,ENTITY,CNT4,IS,PORT,( CLK :,IN,BIT,;,Q :,BUFFER,INTEGER,RANGE,15,DOWNTO,0 ) ;,END,;,ARCHITECTURE,bhv,OF,CNT4,IS,BEGIN,PROCESS,(CLK),BEGIN,IF,CLK,EVENT,AND,CLK = 1,THEN,Q = Q + 1 ;,END,IF,;,END,PROCESS,;,END,bhv,;,-,注意,不是当时钟上升沿来到时,才加,1,并将加法结果传递给,Q,,而是时钟上升沿来到时,只是将加,1,的结果传递给,Q,,加,1,的操作是在,D,触发器的输出一变化马上就加完了。,4.4,计数器设计,4.4.1 4,位二进制加法计数器设计,1,十进制整数,0,十进制整数,35,十进制整数,10E3,十进制整数,等于十进制整数,10000,16#D9#,十六进制整数,等于十六进制整数,D9 H,8#720#,八进制整数,等于八进制整数,720 O,2#11010010#,二进制整数,等于二进制整数,11010010 B,整数的表达不加引号,如:,1,、,0,、,25,逻辑位的数据必须加引号,如:,1,、,0,、,”,10”,、,”,10110”,4.4.2,整数类型,4.4,计数器设计,4.4.3,计数器设计的其他表述方法,【,例,4-21】,LIBRARY,IEEE,;,USE,IEEE,.,STD_LOGIC_1164,.,ALL,;,USE IEEE.STD_LOGIC_UNSIGNED.ALL,;,ENTITY,CNT4,IS,PORT,( CLK :,IN,STD_LOGIC,;,Q :,OUT,STD_LOGIC_VECTOR,(3,DOWNTO,0),) ;,END,;,ARCHITECTURE,bhv,OF,CNT4,IS,SIGNAL,Q1 :,STD_LOGIC_VECTOR,(3,DOWNTO,0);,BEGIN,PROCESS,(CLK),BEGIN,IF,CLK,EVENT,AND,CLK = 1,THEN,Q1 =,Q1,+ 1 ; -,为了进行“标准逻辑向量”和“整数”类型数据的加法运算,必须先打开,-,USE IEEE.STD_LOGIC_UNSIGNED.ALL,,这叫“运算符重载”,END,IF,;,END,PROCESS,;,Q 0) ;,-,计数器异步复位,ELSIF,CLK,EVENT,AND,CLK=1,THEN,-,检测时钟上升沿,IF,EN = 1,THEN,-,检测是否允许计数(同步使能),IF,CQI 0); -,大于,9,,计数值清零,END,IF,;,END,IF,;,END,IF,;,IF,CQI = 9,THEN,COUT = 1; -,计数大于,9,,输出进位信号,ELSE,COUT = 0;,END,IF,;,CQ X),a:= 1,SIGNAL d1 : STD_LOGIC_VECTOR(4 DOWNTO 0);,VARIABLE a1 : STD_LOGIC_VECTOR(15 DOWNTO 0);,.,d1 0),;,a1 := (OTHERS=0),;,d1 e(3),3=e(5), OTHERS=e(1) );,d1= e(1) ,4.5,一般加法计数器设计,4.5.2,程序分析,图,4-14,例,4-22,的,RTL,电路(,Synplify,综合),4.5,一般加法计数器设计,4.5.2,程序分析,图,4-15,例,4-22,的工作时序,4.5,一般加法计数器设计,4.5.3,含并行置位的移位寄存器设计,【,例,4-23】,LIBRARY,IEEE,;,USE,IEEE,.,STD_LOGIC_1164,.,ALL,;,ENTITY,SHFRT,IS,- 8,位右移寄存器,PORT,( CLK,,,LOAD :,IN,STD_LOGIC,;,DIN :,IN,STD_LOGIC_VECTOR,(7,DOWNTO,0);,QB :,OUT,STD_LOGIC,);,END,SHFRT;,ARCHITECTURE,behav,OF,SHFRT,IS,BEGIN,PROCESS,(CLK, LOAD),VARIABLE,REG8 :,STD_LOGIC_VECTOR,(7,DOWNTO,0);,BEGIN,IF,CLK,EVENT,AND,CLK = 1,THEN,IF,LOAD = 1,THEN,REG8 := DIN; -,由(,LOAD=1,)装载新数据,ELSE,REG8(6,DOWNTO,0) := REG8(7,DOWNTO,1);,END,IF,;,END,IF,;,QB = REG8(0); -,输出最低位,END,PROCESS,;,END,behav,;,4.5,一般加法计数器设计,4.5.3,含并行置位的移位寄存器设计,图,4-16,例,4-23,的工作时序,4.6,基于,QuartusII,的,VHDL,文本输入设计,4.6.1,建立工作库文件夹和编辑设计文件,图,4-17,选择,VHDL,文本编辑器,4.6,基于,QuartusII,的,VHDL,文本输入设计,4.6.1,建立工作库文件夹和编辑设计文件,图,4-18,选择编辑文件的语言类型,键入源程序并存盘,4.6,基于,QuartusII,的,VHDL,文本输入设计,4.6.2,创建工程,图,4-19,利用“,New,Preject,Wizard”,创建工程,cnt10,4.6,基于,QuartusII,的,VHDL,文本输入设计,4.6.2,创建工程,图,4-20,将所有相关的文件都加入进此工程,4.6,基于,QuartusII,的,VHDL,文本输入设计,4.6.3,全程编译,图,4-21,例,4-22,的时序仿真波形图,4.6.4,时序仿真,4.6,基于,QuartusII,的,VHDL,文本输入设计,4.6.5,应用,RTL,电路图观察器,图,4-22 RTL Viewer,选择,4.6,基于,QuartusII,的,VHDL,文本输入设计,4.6.5,应用,RTL,电路图观察器,图,4-23,例,4-22,的,RTL,图,4.6,基于,QuartusII,的,VHDL,文本输入设计,4.6.6,硬件测试器,图,4-24,下载,cnt10.sof,并启动,SignalTap,II,,测试输出数据,4.6,基于,QuartusII,的,VHDL,文本输入设计,4.6.6,硬件测试器,图,4-25,SignalTap,II,数据窗设置后的信号波形,习 题,4-1.,画出与下例实体描述对应的原理图符号元件:,ENTITY buf3s IS -,实体,1,: 三态缓冲器,PORT (input : IN STD_LOGIC ; -,输入端,enable : IN STD_LOGIC ; -,使能端,output : OUT STD_LOGIC ) ; -,输出端,END buf3x ;,ENTITY mux21 IS -,实体,2,:,2,选,1,多路选择器,PORT (in0, in1,sel,: IN STD_LOGIC;,output : OUT STD_LOGIC);,习 题,4-2.,图,4-26,所示的是,4,选,1,多路选择器,试分别用,IF_THEN,语句和,CASE,语句的表达方式写出此电路的,VHDL,程序。选择控制的信号,s1,和,s0,的数据类型为,STD_LOGIC_VECTOR,;当,s1=0,,,s0=0,;,s1=0,,,s0=1,;,s1=1,,,s0=0,和,s1=1,,,s0=1,分别执行,y=a,、,y=b,、,y=c,、,y=d,。,图,4-26 4,选,1,多路选择器,习 题,4-3.,图,4-27,所示的是双,2,选,1,多路选择器构成的电路,MUXK,,对于其中,MUX21A,,当,s=0,和,1,时,分别有,y=a,和,ya2,,,b=a3,,,s=s0,,,y=,tmp,);,u2 : MUX21A PORT,MAP(a,=a1,,,b=,tmp,,,s=s1,,,y=,outy,);,END ARCHITECTURE BHV ;,实验与实践,4-2.,时序电路的设计,4-3.,含异步清,0,和同步时钟使能的加法计数器的设计,4-4.,数控分频器的设计,图,4-31,当给出不同输入值,D,时,,FOUT,输出不同频率,(CLK,周期,=50ns),实验与实践,4-2.,时序电路的设计,4-3.,含异步清,0,和同步时钟使能的加法计数器的设计,4-4.,数控分频器的设计,【,例,4-24】,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,USE IEEE.STD_LOGIC_UNSIGNED.ALL;,ENTITY DVF IS,PORT ( CLK : IN STD_LOGIC;,D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);,FOUT : OUT STD_LOGIC );,END;,ARCHITECTURE one OF DVF IS,SIGNAL FULL : STD_LOGIC;,BEGIN,P_REG: PROCESS(CLK),VARIABLE CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0);,BEGIN,IF CLKEVENT AND CLK = 1 THEN,IF CNT8 = 11111111 THEN,CNT8 := D; -,当,CNT8,计数计满时,输入数据,D,被同步预置给计数器,CNT8,FULL = 1; -,同时使溢出标志信号,FULL,输出为高电平,ELSE CNT8 := CNT8 + 1; -,否则继续作加,1,计数,FULL = 0; -,且输出溢出标志信号,FULL,为低电平,END IF;,END IF;,END PROCESS P_REG ;,P_DIV: PROCESS(FULL),VARIABLE CNT2 : STD_LOGIC;,BEGIN,IF FULLEVENT AND FULL = 1 THEN,CNT2 := NOT CNT2; -,如果溢出标志信号,FULL,为高电平,,D,触发器输出取反,IF CNT2 = 1 THEN FOUT = 1; ELSE FOUT CLK8HZ,ToneIndex,=,ToneIndex,);,u2 :,ToneTaba,PORT MAP (Index=,ToneIndex,Tone,=,Tone,CODE,=CODE1,HIGH=HIGH1);,u3 :,Speakera,PORT,MAP(clk,=CLK12MHZ,Tone=Tone,SpkS,=SPKOUT );,END
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!