SOP实验讲义2008.5.doc_第1页
SOP实验讲义2008.5.doc_第2页
SOP实验讲义2008.5.doc_第3页
SOP实验讲义2008.5.doc_第4页
SOP实验讲义2008.5.doc_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

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

文档简介

SOPC技术实验讲义 康芯科技 SOPC技术实验讲义第一版(2008) 杭州康芯电子有限公司配套资料使用说明一、 设备配件1、 电源线一根2、 25芯并口下载线一根3、 十芯JTAG口线一根4、 USB下载线一根5、 USB下载器一个6、 RS232串口线一根7、 单口红色小线若干根8、 配套讲义一本二、 配套资料使用使用说明为了使您更好更快地了解和使用本公司产品,本公司特录制了音像资料,在这里做相关说明:1、 本公司EDA/SOPC产品的主系统主要GW48PK2S/PK3/PK4,适配板GWAC6/AC12/GW2C35等,如您定购的设备主系统型号是GW48-PK3,适配板地的型号是GWAC6,那么给您提供的光盘里文件夹:GW48-PK3+1C6_12;2、 在每个主文件夹有如下文件:l 在您对本公司产品还不了解,可以打开“系统特色及功能说明”;l “EDABOOK3_FOR_1C6(或2C5)”文件夹是科学出版社出版的EDA实用教程配套例程,每个配套例程都有音视或PPT说明;l 如您设备计算机组成原理,那么”CT_BOOK1_FOR_1C6_12(或2C35)”就是现代计算机组成原理教材的配套例程;l “原理图”文件夹里的文件主要是是设备主系统及适配板的原理图,包括1C6/2C35/ADDA/SRAM/FLASH等。l 在“A_FILE”文件夹里,包括所有设备上液晶的使用手册和技术参数;如您的设备配有“DDS函数发生器”模块,此模块具体使用说明在此文件夹里, “Guagle.wave”是任意波生成器软件,在使用“DDS函数发生器”可使用到此软件l 本公司每套设备都配有经典演示示例,具体演示文件及说明在“系统经典示例及说明”文件夹里。 3、 改进后的设备PK2S/PK4可增配全数字DDS函数发生器模块,这给需要此功能的用户带来了4、如您想对QuartusII软件及康芯GW48系列EDA设备快速的了解,可以打开“软硬件操作流程_实验1计数器”文件夹,里面详尽地介绍了从软件建工程仿真锁定引脚-硬件下载测试等一系列操作方法。5、 为了使您对VHDL语法讲解方便,本公司专门录制了VHDL培训音视资料,具体在文件夹”康芯EDA_VHDL培训音视资料”文件夹里。康 芯 电 子 用 心 服 务目 录第一章电路结构图一、实验电路结构图.8二、超高速A/D、D/A板GW_ADDA说明.8三、步进电机和直流电机使用说明 9四、EDA/SOPC适配板使用说明9五 GW48CK/PK2/PK3/PK4 系统万能接插口与结构图信号/与芯片引脚对照表9第二章DSP Builder设计122.1 DSP Builder设计流程122.2 正弦信号发生器设计122.2.1 建立设计模型122.2.2 Simulink模型仿真172.2.3 SignalCompiler使用方法202.2.4硬件测试与硬件实现212.3 DSP Builder层次化设计212.4 DDS设计242.4.1 DDS模块设计242.4.2 FSK调制器设计242.4.3正交信号发生器设计272.4.4 数控移相信号发生器设计282.4.5 幅度调制信号发生器设计292.5 硬件环HIL仿真设计302.5.1 HIL仿真流程302.5.2 FSK的HIL仿真342.6 VHDL模块插入仿真与设计352.7 使用IP Core设计382.7.1 IP核:FIR设计382.7.2 IP核:NCO应用422.7.3 IP核:CSC应用432.7.4 IP核:SignalTapII43第三章NIOSII设计实验443.1 流水灯实验443.1.1 硬件部分设计443.1.2 软件部分设计513.2 建立稍复杂NIOS II系统及配置方法553.2.1 加入组件563.2.2 NiosII硬件系统生成593.3 用户自定义组件设计623.3.1加入用户逻辑模块623.3.2建立软件工程663.3.3运行和调试软件673.3.4 加入电机测速电路683.4 加入用户自定义指令设计703.5 NiosII Flash Programmer733.5.1定制目标板733.5.2 烧写内容到闪存763.6 MicroC/OS核应用773.7 常用HAL API参考813.7.1文件类813.7.2 时间类813.7.3 Flash设备833.7.4 DMA设备84第一章GW48 SOPC实验系统概要说明说明 设备的详细说明请参照EDA技术实验讲义,在这里不再重复说明。第一节:实验电路结构图图3 实验电路结构图NO.0 图4 实验电路结构图NO.1图5 实验电路结构图NO.2 图6 实验电路结构图NO.3图7 实验电路结构图NO.4 图8 实验电路结构图NO.7图9 实验电路结构图NO.8 图10 实验电路结构图NO.9图11 GW48-CK系统的VGA和RS232引脚连接图(此两个接口与PK系列引脚不同)图12 新GW48-PK3/CP+系统的VGA引脚连接图(此VGA接口与老式PK系列引脚不同)图13 实验电路结构图NO.5(VGA引脚为老式PK系列和新式PK2S/4引脚) 实验电路结构图COM图14 实验电路结构图NO.6 图15 GW48-PK2上扫描显示模式时的连接方式: 8数码管扫描式显示,输入信号高电平有效图16 实验电路结构图COM(GW48-PK3上液晶与单片机以及FPGA的I/O口的连接方式)图17 GW_ADDA板插座引脚,左图是老型号AC6/12板,现已淘汰 第二节 超高速A/D、D/A板GW_ADDA说明GW_ADDA板含两片10位超高速DAC(转换速率最高150MHz)和一片8位ADC(转换速率最高50MHz),另2片3dB带宽大于260MHz的高速运放组成变换电路。主要用于基于SOPC的DSP设计、电子设计竞赛和科研开发等。适配板型号为GWAC6/12和GW2C35适配板的ADDA引脚已改动,具体可到光盘里“原理图”查找,在这里列出未改动引脚的适配板引脚,型号有GWAC3、GW2C5/8、GWX400适配板。GW_ADDA板上所有的A/D和D/A全部处于使能状态,除了数据线外,任一器件的控制信号线只有时钟线,这有利于高速控制和直接利用MATLAB/DSP Builder工具的设计。GW_ADDA板上工作时钟必须由FPGA的I/O口提供,且DAC和ADC的工作时钟是分开的。无法直接利用MATLAB和DSP Builder进行自动流程的设计,优点是时钟频率容易变化,且可通过Cyclone中的PLL的到几乎任何时钟频率。由此即可测试ADC和DAC的最高转换频率。两个电位器可分别调协两个D/A输出的幅度(输出幅度峰峰值不可大于5V,否则波形失真);模拟信号从接插口的2针“AIN”输入,J1和J2分别是模拟信号输出的PA、PB口,也可在两挂钩处输出,分别是两个10位DA5651输出口。注意,使用A/D,D/A板必须打开GW48-PK2主系统板上的+/-12V电源,用后关闭!第三节 步进电机和直流电机使用说明图22 电机引脚连接原理图图22是实验系统上的两个电机的引脚图,是以标准引脚方式标注的,具体引脚要查附录第3节表。例如步进电机的Ap相接PIO65,对于SOPC板的EP1C6查表,对应引脚为:219。直流电机的MA1和MA2相为PWM输入控制端,cont为光电输出给FPGA的转速脉冲,接PIO66。注意,不作电机实验时要通过3个跳线座,禁止它们;如其中JM0是步进电机的开关跳线,如此等等。 第四节SOPC适配板简要数明KX_CP1和KX_2C35是SOPC系统上的主适配板,有较大的改动,主要针对(EP1C6/12/2C35)系列器件。该适配板主要由大规模FPGA、A/D,D/A器件、RAM、FLASH、运放、高频时钟、不同模式配置块组成,,具体可到提供的光盘的 “原理图或“系统特色及功能介绍”查询,在这里主要接口做简要说明:1、JTAG PORT:JTAG口,用于编程开发、测试和SOPC软件调试,使用中应该将所配的10芯线与GW48-PK2/3/4主系统左侧的ByteBlasterMV(ByteBlasterII)口相连。2、AS PORT:若欲对Cyclone器件掉电保护的Flash 器件“EPCS1/4”的编程选择;将10芯编程线连接GW48-PK2主系统右侧的ByteBlasterII口和主适配板的“AS PORT”下载口,OK! 3、主适配板的RS232口是用于Nios系统C程序调试的。RS232 1口与Cyclone的引脚连接方式是:RXD接P170脚;TXD接176脚。4、 在主适配板下方的GW2RAM板,其原理图在光盘“原理图”文件夹里,此板含两片16位高速SRAM和一片8M的FLASH,主要用于SOPC设计,作为Nios CPU的外围接口存储器,是用于进行SOPC Nios嵌入式系统实验开发用的。其原理图在 “原理图/GW8AMD065D”。 第七节 GW48CK/PK2/PK3/PK4 系统万能接插口与结构图信号/与芯片引脚对照表结构图上的信号名GWAC6EP1C6/12Q240 CycloneGWAC3EP1C3TC144CycloneGWA2C5EP2C5TC144CycloneIIGWA2C8EP2C8QC208CycloneIIGW2C35EP2C35FBGA484C8 CycloneIIWAK30/50EP1K30/50TQC144 ACEX GWXS200XC3S200 SPARTANGWXS200XC3S200 SPARTAN引脚号引脚号引脚号引脚号引脚号引脚号引脚号引脚号PIO023311438AB158521PIO1234214410AB149622PIO22353311AB1310724PIO32364412AB1212826PIO42375713AA20131027PIO52386814AA19171128PIO62397915AA18181229PIO7240102430L19191331PIO81112531J14201433结构图上的信号名GWAC6EP1C6/12Q240 CycloneGWAC3EP1C3TC144CycloneGWA2C5EP2C5TC144CycloneIIGWA2C8EP2C8QC208CycloneIIGW2C35EP2C35FBGA484C8 CycloneIIWAK30/50EP1K30/50TQC144 ACEX GWXS200XC3S200 SPARTANGWXS200XC3S200 SPARTAN引脚号引脚号引脚号引脚号引脚号引脚号引脚号引脚号PIO92322633H15211534PIO103332734H14221715PIO114342835G16231816PIO126353037F15262035PIO137363139F14272136PIO148373240F13282337PIO1512384041L18292439PIO1613394143L17302540PIO1714404244K22312642PIO1815414345K21322743PIO1916424446K18332844PIO2017474547K17363045PIO2118484748J22373146PIO2219494856J21383248PIO2320505157J20393350PIO2421515258J19413551PIO2541525359J18423652PIO26128676792E116576113PIO27132686994E96777114PIO28133697095E86878115PIO29134707196E76979116PIO30135717297D117080117PIO31136727399D97282119PIO321377374101D87383120PIO331387475102D77884122PIO341397576103C97985123PIO351407679104H78086123PIO361417780105Y78187125PIO371587881106Y138289126PIO381598386107U208390128PIO391608487108K208692130PIO401618592110C138793131PIO411629693112C78895132PIO421639794113H38996133PIO431649896114U39097135PIO441659997115P39198137PIO4516610399116F49299138PIO46167105100117C1095100139PIO47168106101118C1696102140PIO48169107103127G2097103141PIO49173108104128R2098104143PIO60226131129201AB161371302PIO61225132132203AB171381313结构图上的信号名GWAC6EP1C6/12Q240 CycloneGWAC3EP1C3TC144CycloneGWA2C5EP2C5TC144CycloneIIGWA2C8EP2C8QC208CycloneIIGW2C35EP2C35FBGA484C8 CycloneIIWAK30/50EP1K30/50TQC144 ACEX GWXS200XC3S200 SPARTANGWXS200XC3S200 SPARTAN引脚号引脚号引脚号引脚号引脚号引脚号引脚号引脚号PIO62224133133205AB181401324PIO63223134134206AB191411355PIO64222139135207AB201421377PIO65219140136208AB71431409PIO662181411373AB814414110PIO672171421394AB117111PIO68180122126145A10119129161PIO69181121125144A9118123156PIO70182120122143A8117122155PIO71183119121142A7116119154PIO72184114120141A6114118152PIO73185113119139A5113116150PIO74186112118138A4112113149PIO75187111115137A3111112148PIO762161431415AB911212PIO772151441426AB1014413PIO78188110114135B5110108147PIO79195109113134Y10109107146SPEAKER174129112133Y1699105144CLOCK0289391(CLK4)23L1126124184CLOCK21531789(CLK6)132M154125203CLOCK51521617(CLK0)131M2256127204CLOCK9299290(CLK5)130B12124128205 第二章DSP Builder设计DSP Builder可以帮助设计者完成基于FPGA的不同类型的应用系统设计。除了图形化的系统建模外,DSP Builder还可以自动完成大部分的设计过程和仿真,直至把设计文件下载至FPGA开发板上。利用Matlab与DSP Builder进行模块设计也是SOPC技术的一个组成部分。本章以两个简单的电路模型设计为示例,详细介绍Matlab、DSP Builder、QuartusII 三个工具软件联合开发的设计流程。2.1 DSP Builder设计流程DSP Builder是一个系统级(或算法级)设计工具,它架构在多个软件工具之上,可以在Simulink中进行图形化设计和仿真,同时又通过SignalCompiler把Matlab/Simulink的模型设计文件(.mdl)转成相应的硬件描述语言VHDL设计文件(.vhd),对于综合以及此后的处理都由QuartusII来完成。图2.1是基于Matlab、DSP Builder、QuartusII等工具完成设计的流程框图。如图2.1所示,设计流程的第一步是在Matlab/Simulink中进行设计输入。即在Matlab的Simulink环境中建立一个mdl模型文件,用图形方式调用DSP Builder和其他Simulink库中的图形模块,构成系统级或算法级设计框图,或称Simulink设计模型。在第二步,是利用Simulink的图形化仿真、分析功能,分析此设计模型的正确性,完成模型仿真。第三步通过SignalCompiler把Simulink的模型文件(后缀为.mdl)转化成通用的硬件描述语言,VHDL文件。图2.1 基于Matlab、DSP Builder、QuartusII等工具2.2 正弦信号发生器设计本节中,以一个简单的可控正弦波发生模块的设计为例,详细介绍DSP Builder基于手动流程的的使用方法。图2.2所示是一个简单的正弦波发生器,主要由4个部分构成:InCount是阶梯信号发生模块,产生一个按时钟线性递增的地址信号,送往SinLUT。SinLUT是一个正弦函数值的查找表(LUT:Look Up Table)模块,由递增的地址获得正弦波的量化值输出。由SinLUT输出的8位正弦波数据经过一个延时模块Delay后送往Product乘法模块,与SinCtrl相乘。由于SinCtrl是1位(bit)输入,SinCtrl通过Product就完成了对正弦波输出有无的控制。SinOut是整个正弦波发生器模块的输出,送往D/A即可获得正弦波的输出模拟信号。设计者在利用DSP Builder来进行相关设计时,关键的设计过程大都在Matlab的图形仿真环境Simulink中进行。图2.2 正弦波发生模块原理图2.2.1 建立设计模型首先需要建立一个新的设计模型,步骤如下:1.新建模型打开Matlab环境界面如图2.3所示。点击simulink菜单,出现如图2.5。 图2.3 Matlab界面需要新建一个simulink的模型文件(后缀为mdl),在simulink的库管理器中选择“File”菜单(图2.6),在出现的菜单项中选择“New”,在弹出的子菜单项中选择新建模型“model”。图2.6右边显示的就是新模型窗口。图2.5 simulink库管理器 图2.6 建立新模型注意,只有来自Altera DSP Builder元件库中的元件模块构成的电路系统或算法模型能被DSP Builder转化为VHDL程序2、放置SignalCompilder点击simulink库管理器左侧的库内树形列表中的Altera DSP Builder条,使之展开DSP Builder库,这时会出现一长串树形列表,对DSP builder库的子模块(Block)进行了分组,再次点击其中的AltLab项,展开AltLab,选中库管理器右侧的SignalCompilder组件,按住鼠标右键拖动SignalCompilder到新模型窗口中(图2.7)。3、放置Increment Decrement参照图2.2,将Increment Decrement模块放置到新模型中。Increment Decrement模块(图2.8)是DSP Builder库中Arithmetic(算术)模块。选中Altera DSP Builder库中的Arithmetic条,则在库管理器的右侧,可以看到Increment Decrement模块。按照放置SignalCompilder的方法,把Increment Decrement模块拖到新建模型窗口中。4. 设置IncCount用鼠标点击在新建模型窗口中的Increment Decrement模块下面的文字“Increment Decrement”,就可以修改文字内容,也就是可以修改模块名字。在这里不妨将其修改为“IncCount”(图2.8)。然后按照图2.2中描述的含义,把IncCount模块做成一个线性递增的地址发生器,这就需要对IncCount模块的参数进行相应的设置:双击新建模型中的IncCount模块,打开IncCount的模块参数设置对话框:“Block Parameters:IncCount”,如图2.9所示。在参数设置对话框的上半部分是该模块的功能描述和使用说明;对话框的下半部分是参数设置部分,对于Increment Decrement模块共有下面几种参数可以设置:l 总线类型(Bus Type);l 输出位宽(Number of bits);l 增减方向(Direction);l 开始值(Starting Value);l 是否使用控制输入(Use Control Inputs)l 时钟相位选择(Clock Phase Selection) 图2.7 放置SignalCompiler 图2.8 递增递减模块改名为IncCount 图2.9 设置递增递减模块 图2.10 LUT模块对于总线类型(Bus Type),在下拉列表框中共有三种选择:1、 有符号整数(Signed Integer);如9等于二进制的1001,等于-7。2、 有符号小数(Signed Fractional);3、 无符号整数(Unsigned Integer)。例如9等于二进制的1001,等于9。在这里选择“signed Integer”,即有符号整数。对于输出位宽,由于在后面接着的正弦查找表(Sin LUT)的地址为6位,所以输出位宽设为6。IncCount是一个按时钟增1的计数器,Direction设为Increment(增量方式)。Use Control Inputs项可以不选。因为如果选中此项,此模块会出现两个输入端,分别是复位端和时钟使能端。通常在simulink图中的元件的复位和时钟使能端以及都是分别默认接于低电平和高电平使能的,而时钟端是按全局时钟方式相连的。Clock Phase Selection可设置为1(二进制),其他设置采用Increment Decrement模块的默认设置。设置完的对话框如图2.10。然后点击“OK”按钮确认。注意,若对DSP Builder库中模块设置参数值不了解,可以在相应模块的参数设置对话框中点击“Help”按钮(或按F1键),呼出相应帮助信息,以便了解详细的模块参数说明。5、放置正弦查找表(SinLUT)在Altera DSP Builder库的Gate库中找到查找表模块:LUT(图2.10)。把LUT拖到新建模型窗口,按照IncCount的做法把新调入的LUT模块的名字修改成“SinLUT”。双击SinLUT模块,打开模块参数设置对话框:“Block Parameters SinLUT”,如图2.11所示。把输出位宽(Outputnumber of bits)改为8,查找表地址线位宽(LUT Address Width)设为6。总线数据类型Bus Type选择为有符号整数Signed Integer;在“MATLAB Array”编辑框中输入计算查找表内容的计算式。在此可以直接使用sin(正弦)函数,在这里sin函数的调用格式为:sin(起始值:步进值:结束值)SinLUT是一个输入地址为6位、输出值位宽为8的正弦查找表模块,且输入地址总线为有符号数,可以设置起始值为0、结束值为2、步进值为。计算式可写成:127*sin0:2*pi/26:2*pi) 9-1其中pi即为常数。上式的数值变化范围是-127 - +127 ,总值是256,恰好是8位二进制数最大值。但应注意,如果改变地址线宽,如8,以上的2的6次方要改成2的8次方,即:127*sin0:2*pi/28:2*pi) 9-2如果将SinLUT模块的总线数据类型设置为无符号整数Unsigned Integer,且输出位宽(Outputnumber of bits)改为10,若想得到完整满度的波形输出,式5-1应该为下式:511*sin0:2*pi/26:2*pi) + 512 9-3在“Use LPM”处可以选择打勾,表示允许QuartusII利用目标器件中的嵌入式RAM(在EAB、ESB或M4K模块中)来构成SinLUT,即将生成的正弦波数据放在嵌入式RAM构成的ROM中,这样可以节省大量逻辑资源。否则SinLUT只能用芯片中的LCs来构成。设置好的SinLUT参数如图2.11所示。图2.11 设置SinLUT 图2.12 Delay模块及其参数设置窗6、放置Delay模块在simulink库管理器的Altera DSP Builder库中,选中Storage库下的Delay模块,放置到新建模型窗口。Delay模块(图2.12)是一个延时环节。在这里可以不修改其默认参数设置。其具体的默认参数设置见图2.12。在Delay模块的参数设置对话框中,参数“Depth”是描述信号延时深度的参数。当Depth为1,信号传输函数为1/z,表现为通过Delay模块的信号延时1个时钟周期;当Depth为整数n,其传输函数为,表现为通过Delay模块的信号将延时n个时钟周期。Delay模块在硬件上可以采用寄存器(锁存器)来实现,这也就是为什么把Delay模块放在Storage(存储单元)库中的原因。Clock Phase Selection参数主要是控制采样的。当设置为1时表示,每一主频脉冲后,数据都能通过,如果设置为01,则每隔一个脉冲通过一个数据;若设0011,表示每隔两个脉冲通过两个脉冲;0100表示Delay在每隔第2个时钟时被使能通过,而在第1、3、4个时钟时被禁止通过,等等。7、放置端口SinCtrl在simulink库管理器的Altera DSP Builder库中,选中IO & Bus库,找到Input模块,放置在新建模型窗口中。修改AltBus模块的名字为SinCtrl。SinCtrl是一个1位输入端口。双击SinCtrl模块,打开模块参数设置对话框,设置SinCtrl的Bus Type参数为“Single Bit”,Node Type参数为“Input Port”,如图2.13所示。此端口模块将在产生的VHDL文件中变成端口模式为“IN”,数据类型为STD_LOGIC的端口信号。图2.13 设置SinCtrl 8、放置Product模块在simulink库管理器的Altera DSP Builder库中,选中Arithmentic库,找到Product模块(图2.14),用鼠标拖放到新建模型窗口中。在这里Product有两个输入,一个是经过一个Delay的SinLUT查表输出,另一个是外部一位端口SinCtrl。按算法逻辑来看,实现了SinCtrl对SinLUT查找表输出的控制。双击Product模块,打开模块参数设置对话框,设置Product的参数如图2.14。其中Pipeline(流水线)参数指定该乘法器模块使用几级流水线,即乘积延时几个时钟周期后出现。选中“Use LPM”,表示允许采用LPM模块。“Use Dedicated Circuitry”选项用于对FPGA中的专用模块的选择,如Stratix,CycloneII等器件中的专用DSP模块。 图2.14 设置乘法单元9、放置输出端口SinOut在simulink库管理器的Altera DSP Builder库中,选中IO & Bus库,找到Output模块(图2.15),放置在新建模型窗口中。修改模块的名字为SinOut。SinOut是一个8位输出端口,接向FPGA的输出端口,与外面的8位D/A转换器相接,通过D/A把8位数据转换成1路模拟信号。双击SinOut模块,打开模块参数设置对话框,设置SinOut的Bus Type参数为“Signed Integer”,修改“number of bits”参数为8,如图2.15所示。该模块在VHDL文件中将变成OUT端口模式的标准位矢量:STD_LOGIC_VECTOR(7 DOWNTO 0).。如果选择AltBus模块,则其中的“Saturate”项如果选择“On”,则当输出大于有待表达的最大的正值或负值,则此输出即扩位到此最大的正值或负值。若此选项取为“Off”,则最高位MSB被截去。此选项对输入端口或常数节点类型是无效的。“Round”项若选择“On”,则输出略去了所有高位的0位;若选为“Off”,则最低位LSB被截去。此选项不适用于输入和常数类型。“Bypass Bus Format”项为“On”时,表示在Simulink中使用浮点数进行仿真。 图2.15 设置SinOut 图2.16 Step模块 图2.17 Scope模型10. 设计文件存盘放置完SinOut模块后,按照图2.2,把新建模型窗口中的DSP Builder模块连接起来。这样就完成了一个正弦波发生器的DSP Builder模型设计。在进行仿真验证和SignalCompiler编译之前,先对设计进行存盘操作:点击新建模型窗口的“File”菜单,在下拉菜单中选择“Save”项,取名并保存。在这个例子中,对新建模型取名为Sinout,模型文件为sinout.mdl。在保存完毕后,新建模型窗口的标题栏就会显示模型名称。注意,对模型文件取名,尽量用英文字母打头,不使用空格,不用中文,文件名不要过长。且只有对文件存盘后,才能使用SignalCompiler进行编译,把mdl文件转换为VHDL文件。2.2.2 Simulink模型仿真对一个模型进行仿真,需要施加合适的激励、一定的仿真步进和仿真周期,添加合适的观察点和观察方式。1、加入仿真步进模块首先加入一个Step模块,以模拟SinCtrl的按键使能操作。在Simulink库管理器中,展开simulink库,选中Sources库,把Sources库中的Step模块拖放到sinout模型窗口中(如图2.16)。参照图2.2,把step模块与SinCtrl输入端口相接。注意,凡是来自Altera DSP Builder库以外的模块,SignalCompiler都不能将其变成硬件电路,即不会影响产生的VHDL程序,但在启动Simulink仿真后能影响后面产生的仿真激励文件。Step模块的情况正是如此。2、添加波形观察模块在simulink的库管理器中,展开simulink库,选中其中的Sinks库,把Scope(示波器,图2.17)模块拖放到sinout模型窗口中。双击该模块,打开的是一个Scope窗口(图2.18)。图中所示只有一个信号的波形观察窗口,而如若希望可以多观察几路信号,自然可以通过调用多个Scope模块的方法来实现,这里介绍通过修改scope参数来增加同一scope中观察窗。3、Scope参数设置用鼠标点击Scope模块窗口上侧工具栏的第二个工具按钮:“Parameters”参数设置。打开Scope参数设置对话框,见图2.19。在Scope参数设置对话框中共有两个选项页:“Gerneral”(通用)和“Data History”(数据历史)。在“Gerneral”选项页中,改变“Number of axes”参数为2。在点击“OK”按钮确认后,可以看到Scope窗口增加了两个波形观察窗。每个观察窗都可以分别观察信号波形,而且相对独立。然后将SinCtrl的信号接向Scope的另一端(图2.21),以作信号比较。需要注意的是,此路信号在生成的VHDL文件中不会有相应语句,因为没有接上输出端口模块:AltBus或Output模块。 图2.18 Scope初始显示 图2.19 设置Scope参数4、设置仿真激励按图2.2连接sinout模型的全图,先设置模型的仿真激励。在sinout模型图中只有一个输入端口SinCtrl,需要设置与此相连的Step模块:双击放置在sinout模型窗口中的Step模块,设置对输入端口SinCtrl施加的激励。在打开的Step模块参数设置对话框中,可以看到下列参数(详见图2.20):l 步进间隔(step time);l 初始值(Initial value);l 终值(Final value);l 采样时间(Sample time)在sinout模型编辑窗中(图2.21),点击“Simulation”菜单,在下拉菜单中选择“Simulation parameters”菜单项,如图2.22所示。随后,将弹出sinout模型的仿真参数设置对话框:“Simulation Parameters : sinout”。仿真参数设置对话框中共有5个选项页:Solver、Workspace I/O、Diagnostics、Advanced、Real-Time Workshop。其中“Solver”选项页中完成仿真时,基本的时间设置、步进间隔和方式、输出选项。在sinout模型中,可设置“Start time”为0.0,“Stop time”为500。其他设置按照默认。选项页的设置也按照默认设置。然后,点击“OK”按钮确认。为了能更好的在波形观察窗中区分不同信号,可以在sinout模型中对连接线进行命名:双击对应的连接线,就会出现一个可以输入文本的小框,在框中输入信号的名称。6、启动仿真sinout模型编辑窗中,选择“Simulation”菜单,选“Start”项,开始仿真(图2.23)。等待仿真结束,双击Scope模块,打开scope观察窗。图2.24显示了仿真结果,SinOut信号是sinout模型的输出(scope观察窗中模拟了D/A的输出波形),SinCtrl信号是sinout模型的输入,可以看出SinOut受到了SinCtrl的控制。当SinCtrl为1时,SinOut波形是正弦波;当SinCtrl为0时,输出为0。在Scope观察窗中,可以使用工具栏中的按钮来放大缩小波形,也可以在波形上单击右键使用“Autoscale”,使波形自动适配波形观察窗,用鼠标左键,可以放大波形。图2.25是改成无符号输出的波形。图2.20 设置Step 图2.21 sinout全图 图2.22 simulink仿真设置 图2.23 simulink仿真Start 图2.24 有符号输出波形(系统级仿真) 图2.25 无符号输出波形(系统级仿真)7、设计成无符号数据输出由图2.24可以看出,输出的正弦波是有符号数据,它在正负127间变化,但一般的D/A器件的输入数据都是无符号的正数。因此,为了能在硬件系统上D/A的输出也能观察到此波形,必须对此输出作一些改进,以便输出无符号数。最简单的方法是将图2.24中的波形向上平移127,即对输出的数据加上127即可。即对图2.21中的SinLUT的波形数据公式可以改为:127*sin0:2*pi/26:2*pi) + 128 。 此外,图中相关模块的有符号设置全部改为无符号设置。2.2.3 SignalCompiler使用方法在Simulink中完成仿真验证后,就需要把设计转到硬件上加以实现。这是整个DSP Builder设计流程中最关键的一步,据此可以获得针对FPGA的VHDL RTL代码。1、分析当前的模型双击sinout模型中的SignalCompiler模块,将出现如图2.33所示的对话框,点击“Analyze”(分析)按钮后,SignalCompiler就会对sinout模型进行分析,检查模型有无错误,并在Matlab主窗口弹出对话框,并给出相关信息。若有错误存在,SignalCompiler就会停止分析过程,必须去除错误才能继续DSP Builder流程。2、设置Signal Compiler在图2.34中显示了Signal Compiler窗口,大致上可以分为三个功能部分:l 左侧的项目设置选项“Project Setting Options”l 右侧的硬件编译流程“Hardware Compilation”l 下方的信息框“Messages”SignalCompiler的设置都集中在项目设置选项部分。在“Device”下拉选择框中选择需要的器件系列,默认为Stratix系列器件,对此可以修改。在此选为Cyclone系列。 图2.33 双击SignalCompiler 图2.34 打开SignalCo

温馨提示

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

评论

0/150

提交评论