ImageVerifierCode 换一换
格式:PPT , 页数:79 ,大小:3.76MB ,
资源ID:2348523      下载积分:15 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-2348523.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第5章 VHDL设计技术深入.ppt)为本站会员(Facebook)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

第5章 VHDL设计技术深入.ppt

1、,EDA技术及其应用,第5章,VHDL设计技术深入,5.1 深入讨论数据对象,5.1.1,常数,CONSTANT 常数名:数据类型 := 表达式 ;CONSTANT FBT : STD_LOGIC_VECTOR := “010110“ ;- 标准位矢类型CONSTANT DATAIN : INTEGER := 15 ; - 整数类型第1句定义常数FBT的数据类型是STD_LOGIC_VECTOR,它等于 “010110”;第2句定义常数DATAIN的数据类型是整数INTEGER,它等于15 。,5.1 深入讨论数据对象,5.1.2,变量,VARIABLE 变量名 : 数据类型 := 初始值 ;

2、VARIABLE a : INTEGER RANGE 0 TO 15 ;-变量a定义为常数,取值范围是0到5VARIABLE d : STD_LOGIC := 1 ;-变量a定义为标准逻辑位类型, 初始值是1目标变量名 := 表达式 ;VARIABLE x,y : INTEGER RANGE 15 DOWNTO 0 ;-定义变量x和y为整数类型 VARIABLE a,b : STD_LOGIC_VECTOR(7 DOWNTO 0) ; x := 11 ; y := 2 + x ; - 运算表达式赋值,y 也是实数变量 a := b -b向a赋值 a(0 TO 5) := b(2 TO 7) ;

3、,5.1 深入讨论数据对象,5.1.3,信号,SIGNAL 信号名: 数据类型 := 初始值 ;目标信号名 = 表达式 AFTER 时间量;SIGNAL a,b,c,y,z: INTEGER ;. PROCESS (a,b,c) BEGINy = a + b ;z = c a ;y = b ; END PROCESS ;,5.1 深入讨论数据对象,5.1.4,进程中的信号与变量赋值表5-1 信号与变量赋值语句功能的比较,信号SIGNAL,变量VARIABLE,基本用法适用范围行为特性,用于作为电路中的信号连线在整个结构体内的任何地方都能适用在进程的最后才对信号赋值,用于作为进程中局部数据存储单

4、元只能在所定义的进程中使用立即赋值,5.1 深入讨论数据对象,5.1.4,进程中的信号与变量赋值,【例5-1】 .ARCHITECTURE bhv OF DFF3 ISBEGINPROCESS (CLK)VARIABLE QQ : STD_LOGIC ;BEGINIF CLKEVENT AND CLK=1THEN QQ := D1 ;END IF;END PROCESS ;Q1 = QQ;END ;,5.1 深入讨论数据对象,5.1.4,进程中的信号与变量赋值,【例5-2】.ARCHITECTURE bhv OF DFF3 ISSIGNAL QQ : STD_LOGIC ;BEGINPROCE

5、SS (CLK)BEGINIF CLKEVENT AND CLK=1THEN QQ = D1 ;END IF;END PROCESS ;Q1 = QQ;END ;,ENTITY DFF3 IS,END ;,5.1.4 进程中的信号与变量赋值,( : IN STD_LOGIC ;,【例5-3】LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;PORT5.1CLK,D1深入讨论数据对象Q1 : OUT STD_LOGIC ) ;ARCHITECTURE bhv OF DFF3 ISSIGNAL A,B : STD_LOGIC ;BEGINPROCESS (CLK

6、) BEGINIF CLKEVENT AND CLK = 1THENA = D1 ;B = A ;Q1 = B ;END IF;END PROCESS ;END ;,D1,D,Q,D,Q,D,Q,Q1,D1,D,Q,Q1,CLKCLK,图5-1 例5-3的RTL电路,图5-2 D触发器电路,LIBRARY IEEE ;,5.1.4 (进程中的信号与变量赋值,USE IEEE.STD_LOGIC_1164.ALL ;,【例5-4】,5.1 深入讨论数据对象,ENTITY DFF3 IS,PORT CLK,D1 : IN STD_LOGIC ;,Q1 : OUT STD_LOGIC ) ;,END

7、 ;,ARCHITECTURE bhv OF DFF3 IS,BEGIN,PROCESS (CLK),VARIABLE A,B : STD_LOGIC ; BEGIN,IF CLKEVENT AND CLK = 1,THEN,A := D1 ; B := A ;,Q1 = B ;,END IF;,END PROCESS ;,END ;,5.1 深入讨论数据对象,5.1.4,进程中的信号与变量赋值,【例5-5】SIGNAL in1,in2,e1, . : STD_LOGIC ;.PROCESS(in1,in2, . . .)VARIABLE c1,. . . : STD_LOGIC_VECTOR

8、(3 DOWNTO 0) ;BEGINIF in1 = 1 THEN . - 第 1 行e1 = “1010“ ; - 第 2 行.IF in2 = 0 THEN . . . - 第 15+n 行.c1 := “0011“ ; - 第 30+m 行.END IF;END PROCESS;,ENTITY mux4 IS,PORT (i0, i1, i2, i3, a, b : IN STD_LOGIC;,END mux4;,【例5-6】,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,5.1 深入讨论数据对象,q : OUT STD_LOGIC);,5.1.

9、4 进程中的信号与变量赋值,ARCHITECTURE body_mux4 OF mux4 IS signal muxval : integer range 7 downto 0; BEGIN,process(i0,i1,i2,i3,a,b) begin,muxval = 0;,if (a = 1) then muxval = muxval + 1; end if; if (b = 1) then muxval = muxval + 2; end if; case muxval is,when 0 = q q q q null;,end case;,end process;,END body_m

10、ux4;,5.1 深入讨论数据对象,5.1.4,进程中的信号与变量赋值图5-3 例5-6的RTL电路(Synplify综合),ENTITY mux4 IS,PORT (i0, i1, i2, i3, a, b : IN STD_LOGIC;,END mux4;,【例5-7】,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,5.1 深入讨论数据对象,q : OUT STD_LOGIC);,5.1.4 进程中的信号与变量赋值,ARCHITECTURE body_mux4 OF mux4 IS BEGIN,process(i0,i1,i2,i3,a,b),var

11、iable muxval : integer range 7 downto 0; begin,muxval := 0;,if (a = 1) then muxval := muxval + 1; end if; if (b = 1) then muxval := muxval + 2; end if; case muxval is,when 0 = q q q q null;,end case;,end process;,END body_mux4;,5.1 深入讨论数据对象,5.1.4,进程中的信号与变量赋值,图5-4 例5-7的RTL电路 (Synplify综合),5.1 深入讨论数据对象

12、,5.1.4,进程中的信号与变量赋值图5-5 例5-6中错误的工作时序,5.1 深入讨论数据对象,5.1.4,进程中的信号与变量赋值图5-6 例5-7中正确的工作时序,ENTITY SHIFT IS,(CLK,C0 : IN STD_LOGIC; -时钟和进位输入MD : IN STD_LOGIC_VECTOR(2,CN :,【例5-8】,Library IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,5.1PORT深入讨论数据对象DOWNTO 0); -移位模式控制字,D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -待加载移位的数据 QB :

13、 OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -移位数据输出,5.1.4 进程中的信号与变量赋值OUT STD_LOGIC); -进位输出,END ENTITY;,ARCHITECTURE BEHAV OF SHIFT IS,SIGNAL REG : STD_LOGIC_VECTOR(7 DOWNTO 0);,SIGNAL CY : STD_LOGIC ;,BEGIN,PROCESS (CLK,MD,C0),BEGIN,IF CLKEVENT AND CLK = 1 THEN,CASE MD IS,WHEN “001“ = REG(0) = C0 ;,REG(7 DOW

14、NTO 1) REG(0) = REG(7);,REG(7 DOWNTO 1) REG(7) = REG(0);,REG(6 DOWNTO 0) REG(7) = C0 ;,REG(6 DOWNTO 0) REG(7 DOWNTO 0) REG = REG ; CY = CY ; -保持 END CASE;,END IF;,END PROCESS;,QB(7 DOWNTO 0) = REG(7 DOWNTO 0); CN = CY; -移位后输出 END BEHAV;,5.1 深入讨论数据对象,5.1.4,进程中的信号与变量赋值图5-7 例5-8中带进位循环左移仿真波形(MD=“001“),5

15、.2 双向和三态电路信号赋值,5.2.1,三态门设计图5-8 8位3态控制门电路(Synplify综合),5.2.1,5.2 双向和三态电路信号赋值,【例5-9】三态门设计 LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL; ENTITY tri_s IS,port ( enable : IN STD_LOGIC;,datain : IN STD_LOGIC_VECTOR(7 DOWNTO 0); dataout : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );,END tri_s ;,ARCHITECTURE bhv OF tri_

16、s IS BEGIN,PROCESS(enable,datain),BEGIN,IF enable = 1 THEN dataout = datain ;,ELSE dataout =“ZZZZZZZZ“ ;,END IF ;,END PROCESS; END bhv;,5.2 双向和三态电路信号赋值,5.2.2,双向端口设计,【例5-10】 library ieee; use ieee.std_logic_1164.all; entity tri_state is port (control : in std_logic;in1: in std_logic_vector(7 downto 0

17、);q : inout std_logic_vector(7 downto 0);x : out std_logic_vector(7 downto 0); end tri_state; architecture body_tri of tri_state is begin process(control,q,in1) begin if (control = 0) then x = q ; else q = in1; x=“ZZZZZZZZ“ ; end if; end process; end body_tri;,5.2 双向和三态电路信号赋值,5.2.2,双向端口设计,图5-9 例5-10

18、的仿真波形图,5.2 双向和三态电路信号赋值,5.2.2,双向端口设计,【例5-11】 (以上部分同上例) process(control,q,in1) begin if (control=0) then x = q ; q = “ZZZZZZZZ“;else q = in1; x =“ZZZZZZZZ“;end if; end process; end body_tri;,5.2 双向和三态电路信号赋值,5.2.2,双向端口设计图5-10 例5-11的仿真波形图,5.2 双向和三态电路信号赋值,5.2.2,双向端口设计图5-11 例5-10的综合结果(Synplify综合),5.2 双向和三

19、态电路信号赋值,5.2.2,双向端口设计图5-12 例5-11的综合结果(Synplify综合),【例5-12】,5.2IEEE;,5.2.3,三态总线电路设计,LIBRARY 双向和三态电路信号赋值 USE IEEE.STD_LOGIC_1164.ALL; ENTITY tristate2 ISport ( input3, input2, input1, input0 :IN STD_LOGIC_VECTOR (7 DOWNTO 0);enable : IN STD_LOGIC_VECTOR(1 DOWNTO 0);output : OUT STD_LOGIC_VECTOR (7 DOWNT

20、O 0); END tristate2 ; ARCHITECTURE multiple_drivers OF tristate2 IS BEGIN PROCESS(enable,input3, input2, input1, input0 )BEGINIF enable = “00“ THEN output Z);END IF ;IF enable = “01“ THEN output Z);END IF ;IF enable = “10“ THEN output Z);END IF ;IF enable = “11“ THEN output Z);END IF ; END PROCESS;

21、END multiple_drivers;,5.2 双向和三态电路信号赋值,5.2.3,三态总线电路设计图5-13 例5-12错误的综合结果(Synplify综合结果),5.2.3,三态总线电路设计,图5-14 例5-13正 确的综合结果 (Synplify综合结 果),5.3 IF语句概述,(1) IF,条件句 Then顺序语句,END IF ; (2) IF 条件句 Then顺序语句ELSE顺序语句END IF ; (3) IF 条件句 ThenIF 条件句 Then.END IFEND IF,(4) IF 条件句 Then顺序语句ELSIF 条件句 Then顺序语句.ELSE顺序语句EN

22、D IF,5.3 IF语句概述,【例5-14】,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL; ENTITY control_stmts IS,PORT (a, b, c: IN BOOLEAN;,output: OUT BOOLEAN);,END control_stmts;,ARCHITECTURE example OF control_stmts IS BEGIN,PROCESS (a, b, c),VARIABLE n: BOOLEAN;,BEGIN,IF a THEN n := b; ELSE n := c; END IF;,output = n

23、;,END PROCESS; END example;,5.3 IF语句概述表5-2 8线-3线优先编码器真值表,输,入,输,出,din0 din1 din2 din3 din4 din5 din6 din7,output0 output1 output2,x x x x x x x 0,xxxxxx0 1,xxxxx01 1,x x x x 0 1 1 1,x x x 0 1 1 1 1,x x 0 1 1 1 1 1,x 0 1 1 1 1 1 1,0 1 1 1 1 1 1 1,0 1 0 1 0 1 0 1,0 0 1 1 0 0 1 1,0 0 0 0 1 1 1 1,注:表中的“x

24、”为任意,类似VHDL中的“”值。,5.3 IF语句概述,【例5-15】,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL; ENTITY coder IS,PORT ( din : IN STD_LOGIC_VECTOR(0 TO 7);output : OUT STD_LOGIC_VECTOR(0 TO 2) );,END coder;,ARCHITECTURE behav OF coder IS,SIGNAL SINT : STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN,PROCESS (din),BEGIN,IF (din(7)

25、=0) THEN output = “000“ ; ELSIF (din(6)=0) THEN output = “100“ ; ELSIF (din(5)=0) THEN output = “010“ ; ELSIF (din(4)=0) THEN output = “110“ ; ELSIF (din(3)=0) THEN output = “001“ ; ELSIF (din(2)=0) THEN output = “101“ ; ELSIF (din(1)=0) THEN output = “011“ ;,ELSE output = “111“ ;,END IF ;,END PROCE

26、SS ;,END behav;,5.4 深入了解进程语句,5.4.1,进程语句格式,PROCESS语句结构的一般表达格式如下进程标号: PROCESS ( 敏感信号参数表 ) IS进程说明部分BEGIN顺序描述语句END PROCESS 进程标号;,5.4 深入了解进程语句,5.4.2,进程结构组成进程说明部分,信号赋值语句 变量赋值语句,顺序描述语句部分,进程启动语句 子程序调用语句,顺序描述语句进程跳出语句敏感信号参数表,5.4 深入了解进程语句,5.4.3,进程要点,基于CPU的纯软件的VHDL行为仿真运行方式;基于VHDL综合器的综合结果所可能实现的运行方式;基于最终实现的硬件电路的运

27、行方式。1. PROCESS为一无限循环语句,;,;,;,;,;,5.4 深入了解进程语句,2. PROCESS中的顺序语句具有明显的顺序/并行运行双重性,PROCESS(abc),BEGIN,CASE abc IS,WHEN “0000“ = so so so=“101“ .,WHEN “1110“ = so so NULL ;,END CASE;,END PROCESS;,3. 进程必须由敏感信号的变化来启动,5.4 深入了解进程语句,4. 进程语句本身是并行语句,【例5-16】,ENTITY mul IS,PORT (a, b, c, selx, sely : IN BIT;,data_

28、out : OUT BIT );,END mul;,ARCHITECTURE ex OF mul IS,SIGNAL temp : BIT;,BEGIN,p_a: PROCESS (a, b, selx),BEGIN,IF (selx = 0) THEN temp = a; ELSE temp = b;,END IF;,END PROCESS p_a ;,p_b : PROCESS(temp, c, sely),BEGIN,IF (sely = 0) THEN data_out = temp; ELSE data_out = c; END IF;,END PROCESS p_b ;,END e

29、x;,5.4 深入了解进程语句,5.4.3,进程要点,5. 信号是多个进程间的通信线6. 一个进程中只允许描述对应于一个时钟信号的同步时序逻辑,5.5 并行语句特点,data1 = a AND b ; data2 = c ;,【例5-17】,ARCHITECTURE dataflow OF mux IS,SIGNAL seiect : INTEGER RANGE 15 DOWNTO 0;,BEGIN,Select = 0 WHEN s0=0 AND s1=0 ELSE,1 WHEN s0=1 AND s1=0 ELSE 2 WHEN s0=0 AND s1=1 ELSE 3;,x = a WH

30、EN select=0 ELSE,b WHEN select=1 ELSE c WHEN select=2 ELSE d;,5.6 仿真延时,5.6.1,固有延时,z = x XOR y AFTER 5ns ;z = x XOR y ;B = A AFTER 20ns ;-固有延时模型,5.6 仿真延时,5.6.2,传输延时,B = TRANSPORT A AFTER 20 ns;- 传输延时模型,A,A,B,0,10,20,30,40ns,B,0,10,20,30,40ns,图5-15 固有延时输入输出波形,图5-16传输延时输入输出波形,5.6 仿真延时,5.6.3,仿真 ,VHDL仿真器

31、和综合器将自动为系统中的信号赋值配置一足 够小而又能满足逻辑排序的延时量,即仿真软件的最小分辩时 间,这个延时量就称为仿真(Simulation Delta),或称 延时,从而使并行语句和顺序语句中的并列赋值逻辑得以正确 执行。由此可见,在行为仿真、功能仿真乃至综合中,引入 延时是必需的。仿真中, 延时的引入由EDA工具自动完成, 无需设计者介入。,5.7 实体与相关语句语法,5.7.1,实体语句结构ENTITY 实体名 ISGENERIC ( 参数名:数据类型 );PORT ( 端口表 ); END ENTITY 实体名;,5.7 实体与相关语句语法,5.7.2,参数传递说明语句,参数传递说

32、明语句(GENERIC语句)是一种常数参数的端 口界面,常以一种说明的形式放在实体或块结构体前的说明部 分。GENERIC( 常数名 : 数据类型 : 设定值 ; 常数名 : 数据类型 : 设定值 ) ;,LIBRARY IEEE;,5.7.2,USE IEEE.STD_LOGIC_1164.ALL;,【例5-18】,5.7 实体与相关语句语法,ENTITY andn IS,GENERIC ( n : INTEGER ); -定义类属参量及其数据类型PORT(a : IN STD_LOGIC_VECTOR(n-1 DOWNTO 0);-用类属参量限,制矢量长度 参数传递说明语句,c : OUT

33、 STD_LOGIC);,END;,ARCHITECTURE behav OF andn IS,BEGIN,PROCESS (a),VARIABLE int : STD_LOGIC;,BEGIN,int := 1;,FOR i IN aLENGTH - 1 DOWNTO 0 LOOP -循环语句,IF a(i)=0 THEN int := 0; END IF;,END LOOP;,c =int ;,END PROCESS;,END;,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,q1,q2,【例5-19】,5.7 实体与相关语句语法,ENTITY exn

34、 IS,PORT(d1,d2,d3,d4,d5,d6,d7 : IN STD_LOGIC; 5.7.2 参数传递说明语句 : OUT STD_LOGIC);,END;,ARCHITECTURE exn_behav OF exn IS,COMPONENT andn -调用例10-1的元件调用声明,GENERIC ( n : INTEGER);,PORT(a : IN STD_LOGIC_VECTOR(n-1 DOWNTO 0);,C : OUT STD_LOGIC);,END COMPONENT ;,BEGIN,u1: andn GENERIC MAP (n =2) -参数传递映射语句,定义类属

35、变,量,n赋值为2,PORT MAP (a(0)=d1,a(1)=d2,c=q1);,u2: andn GENERIC MAP (n =5) - 定义类属变量,n赋值为5,PORT MAP (a(0)=d3,a(1)=d4,a(2)=d5,a(3)=d6,a(4)=d7, c=q2);,END;,5.7 实体与相关语句语法,5.7.3,参数传递映射语句,GENERIC MAP(类属表)【例5-20】 LIBRARY IEEE; -待例化元件 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_arith.ALL; USE IEEE.STD_LOGIC

36、_unsigned.ALL; ENTITY addern ISPORT (a, b: IN STD_LOGIC_VECTOR;result: out STD_LOGIC_VECTOR); END addern;ARCHITECTURE behave OF addern ISBEGINresult = a + b;END;,USE IEEE.STD_ LOGIC_ arith. ALL;,USE IEEE.STD_ LOGIC_ unsigned. ALL;,5.7.3:=15);,GENERIC MAP(类属表),【例5-21】,LIBRARY IEEE; -顶层设计 USE IEEE.STD

37、_LOGIC_1164.ALL;,5.7 实体与相关语句语法,ENTITY adders IS,GENERIC (msb_ operand: INTEGER := 15; msb_ sum:,INTEGER 参数传递映射语句,PORT( b: IN STD_LOGIC_VECTOR (msb_ operand DOWNTO 0);result: OUT STD_LOGIC_VECTOR (msb_ sum DOWNTO 0);,END adders;,ARCHITECTURE behave OF adders IS,COMPONENT addern,PORT ( a, b: IN STD_LO

38、GIC_VECTOR;,result: OUT STD_LOGIC_VECTOR);,END COMPONENT;,SIGNAL a: STD_LOGIC_VECTOR (msb_ sum /2 DOWNTO 0); SIGNAL twoa: STD_LOGIC_VECTOR (msb_ operand DOWNTO 0);,BEGIN,twoa = a ,U1: addern PORT MAP (a = twoa , b = b, result = result); U2: addern PORT MAP (a=b (msb_ operand downto,msb_operand/2 +1)

39、,b=b(msb_operand/2 downto 0), result = a);,END behave;,5.7 实体与相关语句语法,5.7.3,参数传递映射语句图5-17 例5-21的RTL电路图(Synplify综合),=,=,N,( ) (, 2 , 2, 2 N,2,),5.8 直接数字综合器(DDS)设计,S out = A sin t = A sin( 2 f out t ) = 2f out t,(5-1)(5-2), = 2 f out T clk,2 f outf clk,(5-3),B f out2 f clk,,,f B = 2 N outf clk,(5-4),S

40、out = Asin ( k 1B k 1,+ ) = Asin N B k 1 + B = Af sin B k 1 + B (5-5) k 1(5-6),5.8 直接数字综合器(DDS)设计,相位字输入,同步 寄存器,数据线位宽,N,频率字输入 同步寄存器,N,N,寄存器,M,M,正弦ROM查找表,D/A,正弦信号输出,相位累加器,相位调制器,clk 系统时钟图5-18 基本DDS结构,B ,2,f clk,2,5.8 直接数字综合器(DDS)设计关于基本DDS结构的常用参量计算(1) DDS的输出频率fout。,f out,= N f clk,(5-7),(2) DDS的频率分辨率。,f

41、 out,= N,(5-8),(3) DDS的频率输入字计算。,B = 2 N ,f out f clk,5.8 直接数字综合器(DDS)设计,图5-19 DDS . vhd顶层原理图,5.8 直接数字综合器(DDS)设计,【例5-22】,LIBRARY ieee ; -波形数据ROM USE ieee.std_logic_1164.all; LIBRARY altera_ mf;,USE altera _ mf. Altera _ mf _ components .all; ENTITY data _ rom IS PORT,( address : IN STD_LOGIC_VECTOR (

42、9 DOWNTO 0);,inclock : IN STD_LOGIC ;,q : OUT STD_LOGIC_VECTOR (9 DOWNTO 0);,END data _ rom;,.,init _file = “./data/LUT10X10.mif“, -波形数据初始化文件路径,lpm _hint = “ENABLE_RUNTIME_MOD=YES, INSTANCE_NAME=rom2“,.,END;,);,5.8 直接数字综合器(DDS)设计,【例5-23】,LIBRARY IEEE; -32位加法器模块 USE IEEE.STD_LOGIC_1164.ALL;,USE IEEE.

43、STD_LOGIC_UNSIGNED.ALL; ENTITY ADDER32B IS,PORT ( A : IN STD_LOGIC_VECTOR(31 DOWNTO 0);,B : IN STD_LOGIC_VECTOR(31 DOWNTO 0); S : OUT STD_LOGIC_VECTOR(31 DOWNTO 0),END ADDER32B;,ARCHITECTURE behav OF ADDER32B IS,BEGIN,S = A + B; END behav;,);,5.8 直接数字综合器(DDS)设计,【例5-23】,LIBRARY IEEE; -32位加法器模块 USE IE

44、EE.STD_LOGIC_1164.ALL;,USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ADDER32B IS,PORT ( A : IN STD_LOGIC_VECTOR(31 DOWNTO 0);,B : IN STD_LOGIC_VECTOR(31 DOWNTO 0); S : OUT STD_LOGIC_VECTOR(31 DOWNTO 0),END ADDER32B;,ARCHITECTURE behav OF ADDER32B IS,BEGIN,S = A + B; END behav;,5.8 直接数字综合器(DDS)设计,【例5-24】-3

45、2位寄存器模块,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL; ENTITY REG32B IS,PORT ( Load : IN STD_LOGIC;,DIN : IN STD_LOGIC_VECTOR(31 DOWNTO 0); DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) );,END REG32B;,ARCHITECTURE behav OF REG32B IS BEGIN,PROCESS (Load, DIN),BEGIN,IF Load EVENT AND Load = 1 THEN - 时钟到来时,锁存输入

46、数据,DOUT = DIN;,END IF;,END PROCESS;,END behav;,5.8 直接数字综合器(DDS)设计,【例5-25】rom_data.mif 10位正弦波数据文件,读者可用MATLAB/DSP Builder生成,WIDTH=10;,DEPTH=1024;,ADDRESS_RADIX=DEC; DATA_RADIX=DEC; CONTENT BEGIN,0 : 513; 1 : 515; 2 : 518; 3 : 521; 4 : 524; 5 : 527; 6 : 530; 7 : 533; 8 : 537; 9 : 540; 10 : 543; 11 : 54

47、6; 13 : 549; 13 : 552; 14 : 555; . . . . . .(略去部分数据),1018 : 493; 1019 : 496; 1020 : 499; 1021 : 502; 1022 : 505; 1023 :,508; END;,习 题,5-1. 说明实体,设计实体概念。,5-2. 举例说明GENERIC说明语句和GENERIC映射语句有何用处,并举,例说明。,5-3. 说明端口模式INOUT和BUFFER有何异同点。 5-4. 表式C = A + B中,A、B和C的数据类型都是,STD_LOGIC_VECTOR,是否能直接进行加法运算?说明原因和解决方,法。,5

48、-5. VHDL中有哪3种数据对象?详细说明它们的功能特点以及使用方,法,举例说明数据对象与数据类型的关系。,5-6. 能把任意一种进制的值向一整数类型的数据对象赋值吗?如果能,怎,样做?,5-7. 数据类型BIT、INTEGER和BOOLEAN分别定义在哪个库中?,习 题,5-8. 回答有关Bit和Boolean数据类型的问题: (1) 解释Bit和Boolean类型的区别; (2) 对于逻辑操作应使用哪种类型? (3) 关系操作的结果为哪种类型?,(4) IF语句测试的表达式是哪种类型?,5-9. 用两种方法设计8位比较器,比较器的输入是两个待比较的8位数 A=A7A0和B=B7B0,输出是 D、E、F。当A=B时D=1;当 AB时E=1;当AB时F=1。第一种设计方案是常规的比较器设计方,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报