实验六自选内容_第1页
实验六自选内容_第2页
实验六自选内容_第3页
实验六自选内容_第4页
实验六自选内容_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

实验要求:LPM定制方法实现。信号数字值存储在ROM中,可以是64个或128个,位长8位。产生的信号可以是正弦波或方波、三角波、锯齿波等,自选。用SignalTap逻辑分析。实验六(一)信号发生器1.LPM模块应用设计原理

正弦信号发生器结构框图

f=f0/64举例:正弦信号发生器2.定制LPM_ROM初始化数据文件

建立.mif格式文件

WIDTH=8;DEPTH=64;ADDRESS_RADIX=HEX;DATA_RADIX=HEX;CONTENTBEGIN0:FF;1:FE;2:FC;3:F9;4:F5;…(数据略去)3D:FC;3E:FE;3F:FF;END;

#include<stdio.h>#include"math.h"main(){inti;floats;for(i=0;i<1024;i++){s=sin(atan(1)*8*i/1024);printf("%d:%d;\n",i,(int)((s+1)*1023/2));}}把上述程序编译成程序后,可在DOS命令行下执行命令:romgen>sin_rom.mif;建立.hex格式文件

将波形数据填入mif文件表中

ASM格式建hex文件

3.定制LPM_ROM元件

定制新的宏功能块

LPM宏功能块设定

选择data_rom模块数据线和地址线宽度

选择地址锁存信号inclock调入ROM初始化数据文件并选择在系统读写功能

LPM_ROM设计完成

修改后的用于例化的波形数据ROM文件:data_rom.vhdLIBRARYieee;USEieee.std_logic_1164.all;LIBRARYaltera_mf;USEaltera_mf.altera_mf_components.all;--使用宏功能库中的所有元件ENTITYdata_romIS PORT(address :INSTD_LOGIC_VECTOR(5DOWNTO0); inclock :INSTD_LOGIC; q :OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDdata_rom;ARCHITECTURESYNOFdata_romIS SIGNALsub_wire0 :STD_LOGIC_VECTOR(7DOWNTO0); COMPONENTaltsyncram--例化altsyncram元件,调用了LPM模块altsyncram GENERIC(--参数传递语句 intended_device_family :STRING;--类属参量数据类型定义 width_a :NATURAL; widthad_a :NATURAL; numwords_a :NATURAL; operation_mode :STRING; outdata_reg_a :STRING; address_aclr_a :STRING; outdata_aclr_a :STRING; width_byteena_a :NATURAL; init_file :STRING; lpm_hint :STRING; lpm_type :STRING ); PORT( clock0 :INSTD_LOGIC;--altsyncram元件接口声明 address_a :INSTD_LOGIC_VECTOR(5DOWNTO0); q_a :OUTSTD_LOGIC_VECTOR(7DOWNTO0)); ENDCOMPONENT;KX康芯科技接下页BEGIN q<=sub_wire0(7DOWNTO0); altsyncram_component:altsyncram GENERICMAP(intended_device_family=>"Cyclone",--参数传递映射 width_a=>8,--数据线宽度8 widthad_a=>6,--地址线宽度6 numwords_a=>64,--数据数量64 operation_mode=>"ROM",--LPM模式ROM outdata_reg_a=>"UNREGISTERED",--输出无锁存 address_aclr_a=>"NONE",--无异步地址清0 outdata_aclr_a=>"NONE",--无输出锁存异步清0 width_byteena_a=>1,--byteena_a输入口宽度1 init_file=>"./dataHEX/SDATA.hex",--ROM初始化数据文件,此处已修改过 lpm_hint=>"ENABLE_RUNTIME_MOD=YES,INSTANCE_NAME=NONE", lpm_type=>"altsyncram")--LPM类型 PORTMAP(clock0=>inclock,address_a=>address,q_a=>sub_wire0);ENDSYN;KX康芯科技4.正弦信号发生器顶层设计

LIBRARYIEEE;--正弦信号发生器源文件USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSINGTISPORT(CLK:INSTD_LOGIC;--信号源时钟DOUT:OUTSTD_LOGIC_VECTOR(7DOWNTO0));--8位波形数据输出END;ARCHITECTUREDACCOFSINGTISCOMPONENTdata_rom--调用波形数据存储器LPM_ROM文件:data_rom.vhd声明PORT(address:INSTD_LOGIC_VECTOR(5DOWNTO0);--6位地址信号 inclock:INSTD_LOGIC;--地址锁存时钟 q:OUTSTD_LOGIC_VECTOR(7DOWNTO0) );ENDCOMPONENT;SIGNALQ1:STD_LOGIC_VECTOR(5DOWNTO0);--设定内部节点作为地址计数器BEGINPROCESS(CLK)--LPM_ROM地址发生器进程BEGINIFCLK'EVENTANDCLK='1'THENQ1<=Q1+1;--Q1作为地址发生器计数器ENDIF;ENDPROCESS;u1:data_romPORTMAP(address=>Q1,q=>DOUT,inclock=>CLK);--例化END;仿真波形输出

嵌入式逻辑分析仪获得的波形

采用流水线技术完成高速数字相关器设计。具体要求如下:输入为两路16位串行序列;先设计并行16位数字相关器,估计最大延时,并计算可能运行的最高频率;使用流水线技术在1位数字相关器的输入、输出及每一级组合逻辑的结果处加入流水线寄存器,改善其运行速度,估计最大延时,并计算可能运行的最高频率;实验六(二)数字相关器速度优化方法1.流水线设计

图9-5未使用流水线

图9-6使用流水线图9-7流水线工作图示

LIBRARYieee;USEieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;ENTITYadder4ISPORT(clk:instd_logic;a0,a1,a2,a3:instd_logic_vector(7downto0);yout:outstd_logic_vector(9downto0));ENDadder4;ARCHITECTUREnormal_archOFadder4ISsignalt0,t1,t2,t3:std_logic_vector(7downto0);signaladdtmp0,addtmp1:std_logic_vector(8downto0);BEGINprocess(clk)beginif(clk'eventandclk='1')thent0<=a0;t1<=a1;t2<=a2;t3<=a3;endif;endprocess;addtmp0<='0'&t0+t1;addtmp1<='0'&t2+t3;process(clk)beginif(clk'eventandclk='1')thenyout<='0'&addtmp0+addtmp1;endif;endprocess;ENDnormal_arch;KX康芯科技图9-8不合理的结构

LIBRARYieee;USEieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;ENTITYpipeaddISPORT(clk:instd_logic;a0,a1,a2,a3:instd_logic_vector(7downto0);yout:outstd_logic_vector(9downto0));ENDpipeadd;ARCHITECTUREpipelining_archOFpipeaddISsignalt0,t1,t2,t3:std_logic_vector(7downto0);signaladdtmp0,addtmp1:std_logic_vector(8downto0);BEGINprocess(clk)beginif(clk'eventandclk='1')thent0<=a0;t1<=a1;t2<=a2;t3<=a3;endif;endprocess;process(clk)beginif(clk'eventandclk='1')thenaddtmp0<='0'&t0+t1;addtmp1<='0'&t2+t3;yout<='0'&addtmp0+addtmp1;endif;endprocess;ENDpipelining_arch;

KX康芯科技2.寄存器配平

图9-9寄存器配平的结构

3.关键路径法

图9-10关键路径示意

优化设置与时序分析1.Settings设置

1.修改工程设置。2.指定HDL设置。3.指定时序设置。4.指定编译器设置。5.指定仿真器设置。6.指定软件构建设置。7.指定HardCopy时序设置。2.Analysis&Synthesis的优化设置

进行WYSIWYG(所见即所得类型)基本单元再综合。

进行逻辑门级寄存器重新设置。Tsu/Tco和Fmax之间进行折中取舍。

3.适配器Fitter设置

图9-11适配器Fitter设置

4.增量布局布线控制设置

图9-12反标设置

5.使用DesignAssistant检查设计可靠性

图9-13DesignAssistant设置

6.时序设置与分析

图9-14全编译前时序条件设置(设置时钟信号CLK不低于130MHz)

图9-15由TimingWizard窗口设置时序条件

7.查看时序分析结果

图9-16时序分析报告窗

图9-17TimingAnalyzerTool项进入的时序分析报告窗

适配优化设置示例

LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSINGTISPORT(CLK:INSTD_LOGIC;DOUT:OUTINTEGERRANGE255DOWNTO0);END;ARCHITECTUREDACCOFSINGTISSIGNALQ:INTEGERRANGE63DOWNTO0;SIGNALD:INTEGERRANGE255DOWNTO0;BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENIFQ<63THENQ<=Q+1;ELSEQ<=0;ENDIF;ENDIF;ENDPROCESS;PROCESS(Q)BEGINCASEQISWHEN00=>D<=255;WHEN01=>D<=254;WHEN02=>D<=252;WHEN03=>D<=249;WHEN04=>D<=245;WHEN05=>D<=239;WHEN06=>D<=233;WHEN07=>D<=225;WHEN08=>D<=217;WHEN09=>D<=207;WHEN10=>D<=197;WHEN11=>D<=186;WHEN12=>D<=174;WHEN13=>D<=162;WHEN14=>D<=150;WHEN15=>D<=137;WHEN16=>D<=124;WHEN17=>D<=112;WHEN18=>D<=99;WHEN19=>D<=87;WHEN20=>D<=75;WHEN21=>D<=64;WHEN22=>D<=53;WHEN23=>D<=43;WHEN24=>D<=34;WHEN25=>D<=26;WHEN26=>D<=19;WHEN27=>D<=13;WHEN28=>D<=8;WHEN29=>D<=4;WHEN30=>D<=1;WHEN31=>D<=0;WHEN32=>D<=0;WHEN33=>D<=1;WHEN34=>D<=4;WHEN35=>D<=8;WHEN36=>D<=13;WHEN37=>D<=19;WHEN38=>D<=26;WHEN39=>D<=34;WHEN40=>D<=43;WHEN41=>D<=53;WHEN42=>D<=64;WHEN43=>D<=75;WHEN44=>D<=87;WHEN45=>D<=99;WHEN46=>D<=112;WHEN47=>D<=124;WHEN48=>D<=137;WHEN49=>D<=150;WHEN50=>D<=162;WHEN51=>D<=174;WHEN52=>D<=186;WHEN53=>D<=197;WHEN54=>D<=207;WHEN55=>D<=217;WHEN56=>D<=225;WHEN57=>D<=233;WHEN58=>D<=239;WHEN59=>D<=245;WHEN60=>D<=249;WHEN61=>D<=252;WHEN62=>D<=254;WHEN63=>D<=255;WHENOTHERS=>NULL;ENDCASE;ENDPROCESS;DOUT<=D;END;

KX康芯科技图9-18未用乘积项前的编译报告

图9-19针对工程选择LocateinAssignmentEditor图9-20选用乘积项逻辑优化

图9-21在floorplan中可以看到使用了32个ESB图9-22使用了乘积项的编译报告

8.SlowSlewRate设置

图9-23SlowSlewRate选择

9.LogicLock优化技术

QuartusII提供了一种非常优秀的优化技术,即逻辑锁定技术(LogicLock)。

QuartusII支持逻辑锁定技术的FPGA器件系列有APEX20K、APEXII、Excalibur、Cyclone和Stratix等。

由一个4位十进制数码管(含小数点)显示结果;测量范围为1Hz~9999KHz;能自动根据7位十进制的结果,自动选择有效数据的高4位进行动态显示(即量程自动转换),小数点表示是千位,即KHz;为检测设计正确与否,应将第2时钟通过PLL和手控分频器产生宽范围的多个频率来测试自动换档频率计功能。实验六(三)自动换挡频率计频率计原理:测定信号的频率必须有一个脉宽为1秒的输入信号脉冲计数允许的信号;1秒计数结束后,计数值被锁入锁存器,计数器清0,为下一测频计数周期作好准备。测频控制信号可以由一个独立的发生器来产生,即图7-34中的FTCTRL。设计要求是:FTCTRL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计中的32位二进制计数器COUNTER32B(图7-34)的ENABL使能端进行同步控制。当CNT_EN高电平时允许计数;低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进锁存器REG32B中,并由外部的16进制7段译码器译出,显示计数值。设置锁存器的好处是数据显示稳定,不会由于周期性的清0信号而不断闪烁。锁存信号后,必须有一清0信号RST_CNT对计数器进行清零,为下1秒的计数操作作准备。

8位16进制频率计设计举例图7-34频率计电路框图

LIBRARYIEEE;--测频控制电路USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYFTCTRLISPORT(CLKK:INSTD_LOGIC;--1HzCNT_EN:OUTSTD_LOGIC;--计数器时钟使能RST_CNT:OUTSTD_LOGIC;--计数器清零Load:OUTSTD_LOGIC);--输出锁存信号ENDFTCTRL;ARCHITECTUREbehavOFFTCTRLISSIGNALDiv2CLK:STD_LOGIC;BEGINPROCESS(CLKK)BEGINIFCLKK'EVENTANDCLKK='1'THEN--1Hz时钟2分频Div2CLK<=NOTDiv2CLK;ENDIF;ENDPROCESS;PROCESS(CLKK,Div2CLK)BEGINIFCLKK='0'ANDDiv2CLK='0'THENRST_CNT<='1';--产生计数器清零信号ELSERST_CNT<='0';ENDIF;ENDPROCESS;Load<=NOTDiv2CLK;CNT_EN<=Div2CLK;ENDbehav;

KX康芯科技LIBRARYIEEE;--32位锁存器USEIEEE.STD_LOGIC_1164.ALL;ENTITYREG32BISPORT(LK:INSTD_LOGIC;DIN:INSTD_LOGIC_VECTOR(31DOWNTO0);DOUT:OUTSTD_LOGIC_VECTOR(31DOWNTO0));ENDREG32B;ARCHITECTUREbehavOFREG32BISBEGINPROCESS(LK,DIN)BEGINIFLK'EVENTANDLK='1'THENDOUT<=DIN;ENDIF;ENDPROCESS;ENDbehav;

LIBRARYIEEE;--32位计数器USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCOUNTER32BISPORT(FIN:INSTD_LOGIC;--时钟信号CLR:INSTD_LOGIC;--清零信号ENABL:INSTD_LOGIC;--计数使能信号DOUT:OUTSTD_LOGIC_VECTOR(31DOWNTO0));--计数结果ENDCOUNTER32B;ARCHITECTUREbehavOFCOUNTER32BISSIGNALCQI:STD_LOGIC_VECTOR(31DOWNTO0);BEGINPROCESS(FIN,CLR,ENABL)BEGINIFCLR='1'THENCQI<=(OTHERS=>'0');--清零ELSIFFIN'EVENTANDFIN='1'THENIFENABL='1'THENCQI<=CQI+1;ENDIF;ENDIF;ENDPROCESS;DOUT<=CQI;ENDbehav;KX康芯科技LIBRARYIEEE;--频率计顶层文件LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYFREQTESTISPORT(CLK1HZ:INSTD_LOGIC;FSIN:INSTD_LOGIC;DOUT:OUTSTD_LOGIC_VECTOR(31DOWNTO0));ENDFREQTEST;ARCHITECTUREstrucOFFREQTESTISCOMPONENTFTCTRLPORT(CLKK:INSTD_LOGIC;--1HzCNT_EN:OUTSTD_LOGIC;--计数器时钟使能RST_CNT:OUTSTD_LOGIC;--计数器清零Load:OUTSTD_LOGIC);--输出锁存信号ENDCOMPONENT;COMPONENTCOUNTER32BPORT(FIN:INSTD_LOGIC;--时钟信号CLR:INSTD_LOGIC;--清零信号ENABL:INSTD_LOGIC;--计数使能信号DOUT:OUTSTD_LOGIC_VECTOR(31DOWNTO0));--计数结果ENDCOMPONENT;COMPONENTREG32B接下页KX康芯科技PORT(LK:INSTD_LOGIC;DIN:INSTD_LOGIC_VECTOR(31DOWNTO0);DOUT:OUTSTD_LOGIC_VECTOR(31DOWNTO0));ENDCOMPONENT;SIGNALTSTEN1:STD_LOGIC;SIGNALCLR_CNT1:STD_LOGIC;SIGNALLoad1:STD_LOGIC;SIGNALDTO1:STD_LOGIC_VECTOR(31DOWNTO0);SIGNALCARRY_OUT1:STD_LOGIC_VECTOR(6DOWNTO0);BEGINU1:FTCTRLPORTMAP(CLKK=>CLK1HZ,CNT_EN=>TSTEN1,RST_CNT=>CLR_CNT1,Load=>Load1);U2:REG32BPORTMAP(LK=>Load1,DIN=>DTO1,DOUT=>DOUT);U3:COUNTER32BPORTMAP(FIN=>FSIN,CLR=>CLR_CNT1,ENABL=>TSTEN1,DOUT=>DTO1);ENDstruc;

KX康芯科技图7-33频率计测频控制器FTCTRL测控时序图

实验六(四)直接数字式频率合成器

DDS设计

图12-41DDS基本结构

图12-42相位累加器位宽和采样点关系

接下页LIBRARYIEEE;--DDS顶层设计USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYDDS_VHDLISPORT(CLK:INSTD_LOGIC;FWORD:INSTD_LOGIC_VECTOR(7DOWNTO0);--频率控制字PWORD:INSTD_LOGIC_VECTOR(7DOWNTO0);--相位控制字FOUT:OUTSTD_LOGIC_VECTOR(9DOWNTO0));END;ARCHITECTUREoneOFDDS_VHDLISCOMPONENTREG32BPORT(LOAD:INSTD_LOGIC;DIN:INSTD_LOGIC_VECTOR(31DOWNTO0);DOUT:OUTSTD_LOGIC_VECTOR(31DOWNTO0));ENDCOMPONENT;COMPONENTREG10BKX康芯科技PORT(LOAD:INSTD_LOGIC;DIN:INSTD_LOGIC_VECTOR(9DOWNTO0);DOUT:OUTSTD_LOGIC_VECTOR(9DOWNTO0));ENDCOMPONENT;COMPONENTADDER32BPORT(A:INSTD_LOGIC_VECTOR(31DOWNTO0);B:INSTD_LOGIC_VECTOR(31DOWNTO0);S:OUTSTD_LOGIC_VECTOR(31DOWNTO0));ENDCOMPONENT;COMPONENTADDER10BPORT(A:INSTD_LOGIC_VECTOR(9DOWNTO0);B:INSTD_LOGIC_VECTOR(9DOWNTO0);S:OUTSTD_LOGIC_VECTOR(9DOWNTO0));ENDCOMPONENT;COMPONENTSIN_ROMPORT (address :INSTD_LOGIC_VECTOR(9DOWNTO0); inclock :INSTD_LOGIC;接下页KX康芯科技 q :OUTSTD_LOGIC_VECTOR(9DOWNTO0) );ENDCOMPONENT;SIGNALF32B,D32B,DIN32B:STD_LOGIC_VECTOR(31DOWNTO0);SIGNALP10B,LIN10B,SIN10B:STD_LOGIC_VECTOR(9DOWNTO0);BEGINF32B(27DOWNTO20)<=FWORD;F32B(31DOWNTO28)<="0000";P10B(1DOWNTO0)<="00";F32B(19DOWNTO0)<="00000000000000000000";P10B(9DOWNTO2)<=PWORD;u1:ADDER32BPORTMAP(A=>F32B,B=>D32B,S=>DIN32B);u2:REG32BPORTMAP(DOUT=>D32B,DIN=>DIN32B,LOAD=>CLK);u3:SIN_ROMPORTMAP(address=>SIN10B,q=>FOUT,inclock=>CLK);u4:ADDER10BPORTMAP(A=>P10B,B=>D32B(31DOWNTO22),S=>LIN10B);u5:REG10BPORTMAP(DOUT=>SIN10B,DIN=>LIN10B,LOAD=>CLK);END;KX康芯科技LIBRARYIEEE;--32位加法器模块USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYADDER32BISPORT(A,B:INSTD_LOGIC_VECTOR(31DOWNTO0);S:OUTSTD_LOGIC_VECTOR(31DOWNTO0));ENDADDER32B;ARCHITECTUREbehavOFADDER32BISBEGIN S<=A+B;ENDbehav;LIBRARYIEEE;--32位寄存器模块USEIEEE.STD_LOGIC_1164.ALL;ENTITYREG32BISPORT(Load:INSTD_LOGIC;DIN:INSTD_LOGIC_VECTOR(31DOWNTO0);DOUT:OUTSTD_LOGIC_VECTOR(31DOWNTO0));ENDREG32B;ARCHITECTUREbehavOFREG32BISBEGINPROCESS(Load,DIN)BEGINIFLoad'EVENTANDLoad='1'THENDOUT<=DIN;ENDIF;

ENDPROrom_data.mif10位正弦波数据文件,读者可用MATLAB/DSPBuilder生成WIDTH=10;DEPTH=1024;ADDRESS_RADIX=DEC;DATA_RADIX=DEC;CONTENTBEGIN0:512;1:515;2:518;3:521;4:524;5:527;6:530;7:533;8:537;9:540;10:543;11:546;12:549;13:552;14:555;......(略去部分数据)1018:493;1019:496;1020:499;1021:502;1022:505;1023:508;END;LIBRAR

温馨提示

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

评论

0/150

提交评论