《数字电子技术基础-第11章优秀PPT.ppt》由会员分享,可在线阅读,更多相关《数字电子技术基础-第11章优秀PPT.ppt(76页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第11章VHDL数字系统设计实例 11.1数字系统设计简介数字系统设计简介11.1.1数字系统的基本结构数字系统的基本结构数字系统由若干个数字电路和逻辑功能部件组成数字系统由若干个数字电路和逻辑功能部件组成,它可它可以实现数据存储、传输和加工处理等困难的逻辑功能。数以实现数据存储、传输和加工处理等困难的逻辑功能。数字系统从逻辑上可划分为数据处理单元和限制单元两部分,字系统从逻辑上可划分为数据处理单元和限制单元两部分,其结构框图如图其结构框图如图11.1.1所示。数据处理单元实现信息的存储、所示。数据处理单元实现信息的存储、传输和加工处理等功能。限制单元依据外部限制信号和数传输和加工处理等功能。
2、限制单元依据外部限制信号和数据处理单元供应的当前状态信号,发出对数据处理单元的据处理单元供应的当前状态信号,发出对数据处理单元的限制序列信号,在此限制序列信号的作用下,数据处理单限制序列信号,在此限制序列信号的作用下,数据处理单元完成所规定的操作,并向限制单元输出变更后的状态信元完成所规定的操作,并向限制单元输出变更后的状态信号,以表示当前的工作状态和数据处理结果。限制单元接号,以表示当前的工作状态和数据处理结果。限制单元接收到状态信号后,再发出下一步的限制序列信号,使数据收到状态信号后,再发出下一步的限制序列信号,使数据处理单元执行新一轮的操作。处理单元执行新一轮的操作。第11章VHDL数字
3、系统设计实例 图11.1.1数字系统的结构框图 第11章VHDL数字系统设计实例 11.1.2数字系统的基本设计方法数字系统的基本设计方法传统的数字系统设计多接受自底向上的方法,通常设传统的数字系统设计多接受自底向上的方法,通常设计者选用标准的通用集成电路芯片和其他元器件,由底层计者选用标准的通用集成电路芯片和其他元器件,由底层逐级向上构成子系统和系统。其设计过程是:书面设计逐级向上构成子系统和系统。其设计过程是:书面设计硬件安装、调试硬件安装、调试制作样机。这样设计的系统不仅所用元制作样机。这样设计的系统不仅所用元件的种类和数量多,功耗大,牢靠性差,而且花费时间多,件的种类和数量多,功耗大,
4、牢靠性差,而且花费时间多,修改电路和沟通设计思想都很不便利。修改电路和沟通设计思想都很不便利。第11章VHDL数字系统设计实例 EDA技术的发展和可编程逻辑器件的普及对数字系统硬件设计产生了很大的影响,它变更了传统的设计思想,使人们可以利用EDA工具,通过芯片的设计来实现数字系统的功能。现代数字系统设计多接受自顶向下的方法。它是一种从抽象到具体,从高层次到低层次,逐步由粗到细的分层次、分模块的设计方法。设计者先将一个硬件系统划分成几个大的模块,设计出各大模块的行为(功能)或结构,并进行仿真以检验设计思想是否正确,然后将大的模块分给下一级设计者。由于自顶向下的设计能够在高层次完成,即一起先进行功
5、能划分和结构设计时,就能通过仿真去检验系统设计思想是否正确,在早期就能发觉设计中存在的错误,因而大大提高了系统的设计效率,缩短了设计周期。第11章VHDL数字系统设计实例 数字系统设计主要分系统设计和逻辑设计两个阶段。数字系统的一般设计过程如下:(1)确定顶层系统的方案。这是设计过程的第一阶段,要求对设计任务进行透彻了解,并在此基础上确定设计任务和系统整体的功能、输入信号及输出信号。(2)描述系统功能,设计算法。第11章VHDL数字系统设计实例 描述系统功能是用符号、图形、文字、表达式等形式来正确描述系统应具有的逻辑功能和应达到的技术指标。设计算法是寻求一个解决问题的步骤,实质上是把系统要实现
6、的困难运算分解成一组有序进行的子运算。描述算法的工具有算法流程图、算法状态机图(ASM,Algorithmic stateMachine)、方框图、硬件描述语言等。在上述描述方法中,硬件描述语言是一种最简洁向计算机输入,由计算机自动处理的现代化方法。方框图用于描述数字系统的模型,是系统设计常用的重要手段,它可以具体描述系统的总体结构,并作为进一步设计的基础。第11章VHDL数字系统设计实例(3)依据算法选择电路结构。算法明确后,依据算法选择电路结构,并将系统划分为若干个子系统。若某部分规模仍旧较大,则可进一步划分。划分后的多个部分应逻辑功能清晰,便于进行电路设计。(4)设计输入。描述系统功能的
7、输入方式有多种,常用的有原理图输入法、硬件描述语言输入法、波形图输入法等。可以接受其中一种方法输入,也可以多种方法混合运用。(5)设计验证(仿真、测试)和设计实现。第11章VHDL数字系统设计实例 11.2数字系统设计实例数字系统设计实例11.2.1简易电子琴简易电子琴1.系统原理框图系统原理框图扬声器在不同频率的信号驱动下将发出不同的声音。本设计是利用实验板上的8个按键产生不同的音阶信号,按键不同时,不同的音阶信号产生不同频率的信号去驱动扬声器,从而实现电子琴的功能。根据音乐学理论,每两个8度音之间可分为12个半音,每两个半音之间的频率相差(=1.0599Hz)。若C调第一个音名do的频率定
8、为261.63Hz,则各音名与频率以及2MHz时钟的分频系数的关系如表11.2.1所示。第11章VHDL数字系统设计实例 表表11.2.1音名与频率以及音名与频率以及2MHz时钟的分频系数的关系时钟的分频系数的关系 第11章VHDL数字系统设计实例 简易电子琴的系统框图如图11.2.1所示,它由键盘编码器和时钟分频器组成。键盘编码器产生按键编码信号;时钟分频器产生不同的分频系数,将输入时钟频率分频至各音名对应的频率值,从而驱动扬声器发出该频率的声音。第11章VHDL数字系统设计实例 图11.2.1 电子琴系统框图 第11章VHDL数字系统设计实例 图11.2.2 电子琴顶层原理图 第11章VH
9、DL数字系统设计实例 图11.2.2为实现简易电子琴的顶层原理图。其中,KEYBOARD模块实现对键盘的8-3编码,K7.0为键盘输入,SEL2.0为3位二进制编码输出,EN为使能输出信号(高电平有效);MFREQ模块实现分频功能,CLK为时钟输入,当SEL2.0编码输入不同,且EN输入为高电平常,分频器产生不同的频率值,当SPK输出为1时扬声器响,否则静音。第11章VHDL数字系统设计实例 2.模块设计模块设计1)键盘编码器VHDL描述文件keyboard.vhd如下:library ieee;use ieee.stdlogic1164.all;use ieee.stdlogicunsign
10、ed.all;entitykeyboard isport(k:instdlogicvector(7 downto 0);8位键盘输入sel:outstdlogicvector(2 downto 0);3位键盘编码输出en:outstdlogic使能输出);第11章VHDL数字系统设计实例 end keyboard;architecture arckeyboard ofkeyboard isbegin process(k)begincase k iswhen 11111110=sel=001;按键,产生编码 ensel=010;ensel=011;ensel=100;ensel=101;ense
11、l=110;ensel=111;ensel=000;ensel=000;en=0;end case;end process;end arckeyboard;第11章VHDL数字系统设计实例 2)时钟分频器VHDL描述文件mfreq.vhd如下:library ieee;use ieee.stdlogic1164.all;use ieee.stdlogicunsigned.all;entitymfreq isport(clk,en:instdlogic;sel:instdlogicvector(2 downto 0);3位键盘编码输入 spk:outstdlogic扬声器限制信号输出);end
12、mfreq;第11章VHDL数字系统设计实例 architecture arcmfreq ofmfreq issignalcountld,count:stdlogicvector(12 downto 0);beginprocess(sel)begincase sel is第11章VHDL数字系统设计实例 end case;end process;processbeginwait until clkevent and clk=1;-计数器同步清零if en=0thencount0);spk=1;第11章VHDL数字系统设计实例 当计数值小于countld/2时,spk=1,且加1计数elsif
13、count(0&countld(12 downto 1)thencount=count+1;spk=1;当计数值大于countld/2且小于countld时,spk=0,且加1计数elsif countcountldthencount=count+1;spk=0;-当计数值计到countld时,计数器清零,spk=1 else count0);spk=1;end if;end process;end arcmfreq;第11章VHDL数字系统设计实例 11.2.2用状态机设计的交通信号限制系统用状态机设计的交通信号限制系统1.设计任务设计任务设计一个十字路口交通限制系统设计一个十字路口交通限制
14、系统,要求如下:要求如下:(1)东西(用东西(用A表示)、南北(用表示)、南北(用B表示)方向均有绿灯、表示)方向均有绿灯、黄灯、红灯指示,其持续时间分别是黄灯、红灯指示,其持续时间分别是40秒、秒、5秒和秒和45秒秒,交通交通灯运行的切换示意图和时序图分别如图灯运行的切换示意图和时序图分别如图11.2.3和图和图11.2.4所示。所示。第11章VHDL数字系统设计实例 图11.2.3交通限制系统运行切换示意图 第11章VHDL数字系统设计实例 图11.2.4交通限制系统的时序图 第11章VHDL数字系统设计实例(2)系统设有时钟,以倒计时方式显示每一路允许通行的时间。(3)当东西或南北两路中
15、任一路出现特殊状况时,系统可由交警手动限制马上进入特殊运行状态,即红灯全亮,时钟停止计时,东西、南北两路全部车辆停止通行;当特殊运行状态结束后,系统复原工作,接着正常运行。第11章VHDL数字系统设计实例 2.原理分析原理分析本系统主要由分频器、计数器、限制器、倒计时显示器本系统主要由分频器、计数器、限制器、倒计时显示器等电路组成。分频器将晶振送来的等电路组成。分频器将晶振送来的4MHz信号变为信号变为1Hz时钟时钟信号;计数器实现总共信号;计数器实现总共90秒的计数,秒的计数,90秒也是交通限制系统秒也是交通限制系统的一个大循环;限制器限制系统的状态转移和红、黄、绿灯的一个大循环;限制器限制
16、系统的状态转移和红、黄、绿灯的信号输出;倒计时显示电路实现的信号输出;倒计时显示电路实现45秒倒计时和显示功能。秒倒计时和显示功能。整个系统的工作时序受限制器限制,它是系统的核心。整个系统的工作时序受限制器限制,它是系统的核心。限制器的整个工作过程用状态机进行描述,其状态转移限制器的整个工作过程用状态机进行描述,其状态转移关系如图关系如图11.2.5所示。所示。5种状态描述如下:种状态描述如下:第11章VHDL数字系统设计实例 s0:A方向绿灯亮,B方向红灯亮,此状态持续40秒的时间;s1:A方向黄灯亮,B方向红灯亮,此状态持续5秒的时间;s2:A方向红灯亮,B方向绿灯亮,此状态持续40秒的时
17、间;s3:A方向红灯亮,B方向黄灯亮,此状态持续5秒的时间;s4:紧急制动状态,A方向红灯亮,B方向红灯亮,当紧急制动信号有效(hold=0)时进入这种状态。第11章VHDL数字系统设计实例 图11.2.5交通限制系统的状态转移图 第11章VHDL数字系统设计实例 当紧急制动信号无效(hold=1)时,状态机依据s0s1s2s3s0循环;当紧急制动信号有效(hold=0)时,状态机马上转入s4,两个方向红灯全亮,计数器停止计数;当紧急制动信号再复原无效时,状态机会回到原来的状态接着执行。第11章VHDL数字系统设计实例 3.电路设计电路设计交通限制系统顶层原理图如图交通限制系统顶层原理图如图1
18、1.2.6所示所示,它主要由它主要由4MHz分频器(分频器(DEVIDE4M)模块、限制器)模块、限制器(CONTROL)、)、45秒倒计时计数器(秒倒计时计数器(M45)模块、)模块、7字段字段译码器(译码器(SEG7)模块组成。)模块组成。4MHz分频器和分频器和7段译码器的段译码器的设计可参按例设计可参按例10.6.14和例和例10.6.4,下面主要介绍限制器和倒,下面主要介绍限制器和倒计时计数器计时计数器M45的设计方法。的设计方法。第11章VHDL数字系统设计实例 图11.2.6交通限制系统顶层原理图 第11章VHDL数字系统设计实例 1)限制器的设计限制器CONTROL的逻辑符号如
19、图11.2.7所示。其中,CLK为时钟输入信号;HOLD为紧急制动信号;ARED、AGREEN、AYELLOW分别为东西方向驱动红灯、绿灯、黄灯指示的输出信号;BRED、BGREEN、BYELLOW分别为南北方向驱动红灯、绿灯、黄灯指示的输出信号。限制器依据图11.2.5所示的状态转移图限制系统的时序,即各方向红、绿、黄灯的亮、灭时间。第11章VHDL数字系统设计实例 图11.2.7限制器的逻辑符号第11章VHDL数字系统设计实例 限制器的VHDL描述文件control.vhd如下:library ieee;use ieee.stdlogic1164.all;use ieee.stdlogic
20、unsigned.all;entitycontrol is port(clk,hold:instdlogic;ared,agreen,ayellow,bred,bgreen,byellow:outstdlogic);end control;architecture behavior ofcontrol istype statetype is(s0,s1,s2,s3,s4);signal current state,next state:statetype;signalcounter:stdlogicvector(6 downto 0);第11章VHDL数字系统设计实例 beginsynch:p
21、rocessbeginwait until clkevent and clk=1;if hold=0then当紧急制动信号有效时,计数器停止计数counter=counter;else当紧急制动信号无效时,计数器进行周期为90s的计数if counter89thencounter=counter+1;elsecounter0);end if;end if;end process;第11章VHDL数字系统设计实例 process状态机的状态转移描述beginwait until clkevent and clk=1;current stateifhold=0thennext state=s4;e
22、lseifcounter39thennext state=s0;第11章VHDL数字系统设计实例 elsenext stateif hold=0thennext state=s4;elseif counter44thennext state=s1;elsenext state 第11章VHDL数字系统设计实例 if hold=0thennext state=s4;elseifcounter84thennext state=s2;elsenext stateif hold=0thennext state=s4;elseif counter89thennext state=s3;else 第11章
23、VHDL数字系统设计实例 next stateif hold=0thennext state=s4;elseif counter39 thennext state=s0;elsif counter44 thennext state=s1;elsif counter84 thennext state=s2;elsif counter89 thennext stateared=0;agreen=1;ayellow=0;bred=1;bgreen=0;byellowared=0;agreen=0;ayellow=1;bred=1;bgreen=0;byellowared=1;agreen=0;aye
24、llow=0;bred=0;bgreen=1;byellow ared=1;第11章VHDL数字系统设计实例 agreen=0;ayellow=0;bred=0;bgreen=0;byellowared=1;agreen=0;ayellow=0;bred=1;bgreen=0;byellow=0;end case;end process;end behavior;第11章VHDL数字系统设计实例 图11.2.8限制器的仿真波形 第11章VHDL数字系统设计实例 2)倒计时计数器M45的设计倒计时计数器M45的逻辑符号如图11.2.9所示。其中,CLK、EN、CR分别为时钟、计数使能和清零端,Q
25、L3.0、QH3.0、OC分别为BCD码的个位、十位和进位输出。图11.2.9倒计时计数器的逻辑符号 第11章VHDL数字系统设计实例 VHDL描述文件m45.vhd如下:library ieee;use ieee.stdlogic1164.all;use ieee.stdlogicunsigned.all;entitym45 isport(CLK:instdlogic;EN :instdlogic;CR :instdlogic;QL,QH:outstdlogicvector(3 downto 0);OC :outstdlogic );end m45;第11章VHDL数字系统设计实例 arch
26、itecturebehav ofm45 issignalcouL,couH:stdlogicvector(3 downto 0);beginprocess(CR,CLK,EN)beginif CR=0then异步清零couL=0000;couH=0000;elsif clkevent and clk=1thenif EN=1thenif(couL=0 andcouH=0)then减法计到00后,重新置数44 couL=0100;couH=0100;elsif couL=0 then否则个位计到0时置为9,十位减1 第11章VHDL数字系统设计实例 couL=1001;couH=couH-1;e
27、lsecouL=couL-1;否则个位减1end if;end if;end if;end process;process(couL,couH)beginif(couL=0 andcouH=0)thenOC=1;减到00时有借位输出elseOC=0;end if;end process;QL=couL;QH=couH;end behav;第11章VHDL数字系统设计实例 图11.2.10倒计时计数器M45的仿真波形 第11章VHDL数字系统设计实例 11.2.3函数信号发生器函数信号发生器1.系统原理框图系统原理框图函数信号发生器电路能够产生用户须要的特定波形信函数信号发生器电路能够产生用户须
28、要的特定波形信号,其基本构成为数字逻辑电路加号,其基本构成为数字逻辑电路加D/A转换器。本节描述转换器。本节描述的函数信号发生器可产生的函数信号发生器可产生4种波形,分别是:锯齿波、三种波形,分别是:锯齿波、三角波、方波和正弦波,通过选择器选择以后送给角波、方波和正弦波,通过选择器选择以后送给D/A转换转换器产生相应的信号波形输出,具体如图器产生相应的信号波形输出,具体如图11.2.11所示。其中所示。其中,用虚线框起来的部分属于数字电路部分。用虚线框起来的部分属于数字电路部分。第11章VHDL数字系统设计实例 图11.2.11函数信号发生器的电路框图 第11章VHDL数字系统设计实例 各种波
29、形示意图如图11.2.12所示。锯齿波、三角波和方波每个周期有256点数据,而正弦波为了简化设计每个周期有64点数据。数据线接受8位宽度,因此每种波形幅度的最大值不超过255。第11章VHDL数字系统设计实例 图11.2.12信号波形示意图 第11章VHDL数字系统设计实例 每种波形第i个点的幅度值计算如下:锯齿波:qsawtooth(i)=i,i=0255。三角波:当i=0127时,qtriangle(i)=i;当i=128255时,与前面的半个周期对称。方波:当i=0127时,qsquare(i)=255;当i=128255时,qsquare(i)=0。正弦波:qsin(i)=128+12
30、8sin(23.14i/64),i=063。四种波形数据产生以后,由sel1.0选择输出哪种波形数据。第11章VHDL数字系统设计实例 2模块设计模块设计函数信号发生器电路数字部分的硬件语言描述如下:library ieee;use ieee.stdlogic1164.all;use ieee.stdlogicunsigned.all;use ieee.stdlogicarith.all;entity waveform isport(clk:instdlogic;sel:instdlogicvector(1 downto 0);qout:outstdlogicvector(7 downto 0
31、);end waveform;第11章VHDL数字系统设计实例 architecture arc ofwaveform issignalqsawtooth:stdlogicvector(7 downto 0);锯齿波信号signalqtriangle:stdlogicvector(7 downto 0);三角波信号signalqsquare:stdlogicvector(7 downto 0);方波信号signalqsin:integerrange0to255;正弦波信号signalcounter:stdlogicvector(7 downto 0);begin计数器,同时也是锯齿波波形产生电
32、路 processbegin 第11章VHDL数字系统设计实例 wait until clkevent and clk=1;counter=counter+1;end process;qsawtooth=counter;三角波波形产生电路processbeginwait until clkevent and clk=1;covnstdlogicvector(127,8),将interger类型的数据127转换成stdlogicvector类型的8位数据if counter=convstdlogicvector(127,8)then 第11章VHDL数字系统设计实例 qtriangle=qtri
33、angle+1;elseqtriangle=qtriangle-1;end if;end process;-方波波形产生电路processbeginwait until clkevent and clk=1;ifcounter=convstdlogicvector(127,8)thenqsquare=XFF;elseqsquare0);end if;end process;第11章VHDL数字系统设计实例 sin波形发生电路将一个周期的正弦波(共64点)的幅度值干脆送给信号qsin processbeginwait until clkevent and clk=1;convinteger(co
34、unter(7 downto 2)将stdlogicvector类型的数据counter(7 downto 2)转换成interger类型的数据case convinteger(counter(7 downto 2)is when 0=qsinqsinqsinqsinqsinqsinqsinqsinqsinqsinqsinqsin=240;第11章VHDL数字系统设计实例 第11章VHDL数字系统设计实例 第11章VHDL数字系统设计实例 在上面的硬件语言描述中运用了一个函数convstdlogicvector(a,b),其作用是将interger类型的数据转换成stdlogicvector类
35、型的数据。其中,参数a表示要转换的整形数,参数b表示生成的stdlogicvector数据的位数。该函数属于stdlogicarith库,所以在最前面库的包含里必需有use ieee.stdlogicarith,否则仿真工具或综合工具都会提示出错。第11章VHDL数字系统设计实例 11.2.4基于基于DDS的正弦信号发生器的正弦信号发生器1干脆数字频率合成器原理简介干脆数字频率合成器原理简介干脆数字频率合成器干脆数字频率合成器(DDS,DirectDigitalSynthesizer)是从相位概念动身干脆)是从相位概念动身干脆合成所需波形的一种频率合成技术。一个数字频率合成器合成所需波形的一种
36、频率合成技术。一个数字频率合成器由相位累加器、加法器、波形存储由相位累加器、加法器、波形存储ROM、D/A转换器和低转换器和低通滤波器(通滤波器(LPF)构成。)构成。DDS的原理框图如图的原理框图如图11.2.13所示。所示。第11章VHDL数字系统设计实例 图11.2.13DDS的原理框图 第11章VHDL数字系统设计实例 图中,K为频率限制字,P为相位限制字,相位累加器的字长为N位,ROM及D/A转换器的位宽为D位。相位累加器在时钟fc的限制下以步长K进行累加,输出的N位二进制码与相位限制字P相加后作为存储波形的ROM的地址对ROM进行寻址。ROM输出D位的幅度码S(n),经D/A转换后
37、变成模拟信号S(t),再经过低通滤波器平滑后就可以得到合成的信号波形。波形形态取决于ROM中存放的数据,因此DDS可以产生随意波形。下面我们以正弦波为例介绍DDS的波形产生原理。第11章VHDL数字系统设计实例 1)频率设置K称为频率限制字,也叫相位增量。输出信号的频率与时钟频率之间的关系为其中,f0为输出信号的频率,fc为时钟频率,N为相位累加器的位数。当K1时,DDS输出最低频率(即频率辨别率)为fc/2N,因此当N值很大时,可以得到很小的频率间隔。要变更DDS的输出频率,只要变更频率限制字K即可。第11章VHDL数字系统设计实例 2)累加器相位累加器由内部N位加法器和N位寄存器组成。每来
38、一个时钟作用沿,加法器将频率限制字K与寄存器输出的数据相加,再把相加的结果送至寄存器输入端。下一个时钟来到后,寄存器将其输出数据又送至加法器输入端接着与频率限制字相加,从而完成在时钟作用下的相位累加。因此每来一个时钟,相位累加器的输出就增加一个步长的相位增量,当相位累加到满量程时便产生一次溢出,完成一个周期的动作。第11章VHDL数字系统设计实例 3)相位调整器相位调整器将相位累加器的输出数据和相位限制字P相加,实现信号的相位调整。变更相位限制字P可限制输入信号的相位参数。假如相位调整器的字长为N,则当相位限制字由0变为P时,输出信号的相位增加2P/2N。4)波形存储器用相位调整器输出的数据作
39、为波形存储器的取样地址,进行波形数据的寻址,即可确定输出波形的取样幅度。N位的ROM相当于把0360的正弦信号离散成具有2N个样点的序列。若ROM的数据位宽为D,则2N个样点的幅值以D位二进制数值存在ROM中,依据地址的不同可以输出相应相位的正弦信号的幅值。第11章VHDL数字系统设计实例 5)D/A转换器转换器D/A转换器的作用是把合成的正弦波数字量转换成模转换器的作用是把合成的正弦波数字量转换成模拟量。转换之后输出波形变成了包络为正弦波的阶梯波拟量。转换之后输出波形变成了包络为正弦波的阶梯波S(t)。D/A转换器的辨别率越高,合成的正弦波台阶数就越转换器的辨别率越高,合成的正弦波台阶数就越
40、多,输出的波形精度也就越高。多,输出的波形精度也就越高。第11章VHDL数字系统设计实例 6)低通滤波器对D/A输出的阶梯波S(t)进行频谱分析可知,S(t)中除主频f0外,还存在分布在fc,2fc,两边f0处的非谐波重量。因此,为了取出主频f0,必需在D/A转换器的输出端接入截止频率为fc/2的低通滤波器。在上面几部分电路中,累加器、限制相位的加法器和ROM存储器可以在FPGA内部实现,而D/A转换器和低通滤波器包含模拟电路,不能在FPGA内部实现。下面我们介绍FPGA内部电路的设计过程。第11章VHDL数字系统设计实例 第11章VHDL数字系统设计实例 2)系统设计依据上面的参数进行设计,
41、VHDL语言描述如下:library ieee;use ieee.stdlogic1164.all;use ieee.stdlogicunsigned.all;use ieee.stdlogicarith.all;entity dds isport(rst:instdlogic;clk:instdlogic;k:instdlogicvector(7 downto 0);p:instdlogicvector(7 downto 0);第11章VHDL数字系统设计实例 dout:outstdlogicvector(7 downto 0);end dds;architecture arc ofdds
42、istypeRom256x8 isarray(0to255)ofstdlogicvector(7 downto 0);存储256点的正弦波数据(1个周期),每个样点为8位,X80表示16进制的数值80第i个点的正弦波幅值计算公式:128+128sin(23.14i/256)第11章VHDL数字系统设计实例 第11章VHDL数字系统设计实例 第11章VHDL数字系统设计实例 signal counter:stdlogicvector(7 downto 0);signal phaseshift :stdlogicvector(7 downto 0);signal address :stdlogic
43、vector(7 downto 0);begin process累加器描述 begin wait until clkevent and clk=1;if rst=1thencounter0);elsecounter=counter+k;end if;end process;第11章VHDL数字系统设计实例 process相位加法器描述beginwait until clkevent and clk=1;ifrst=1then=phaseshift0);elsephaseshift=counter+p;end if;end process;address=phaseshift;dout=Rom(convinteger(address);ROM寻址并输出数据end arc;第11章VHDL数字系统设计实例 图11.2.14DDS波形发生器的仿真波形