第7章LPM宏模块的应用_第1页
第7章LPM宏模块的应用_第2页
第7章LPM宏模块的应用_第3页
第7章LPM宏模块的应用_第4页
第7章LPM宏模块的应用_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

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

文档简介

1、 E D A技术与应用第第7章章 LPMLPM宏模块的应用宏模块的应用 E D A技术与应用LPM是是Library of Parameterized Modules(参(参数可设置模块库)的缩写。在许多设计中,必数可设置模块库)的缩写。在许多设计中,必须利用这些宏模块才可以使用一些须利用这些宏模块才可以使用一些Altera器件器件中特定模块的硬件功能,比如片上存储器、中特定模块的硬件功能,比如片上存储器、DSP模块、模块、LVDS驱动器、嵌入式锁相环驱动器、嵌入式锁相环PLL模模块等。块等。 E D A技术与应用7.1 计数器计数器LPM宏宏模块模块调用调用7.1.1 计数器计数器LPM模块

2、文本代码的调用模块文本代码的调用(1)打开打开LPM宏功能块调用管理器宏功能块调用管理器:新建一个文件夹(如:新建一个文件夹(如d:LPM_MD),选择),选择ToolsMegaWizard Plug-In Manager,选中选中Create a new custom megafunction variation单选按钮单选按钮(定制一个新模块),或选中(定制一个新模块),或选中Edit an existing custom megafunction variation(修改一个已编辑好的(修改一个已编辑好的LPM模块)。模块)。 E D A技术与应用7.1 计数器计数器LPM宏宏模块模块调

3、用调用7.1.1 计数器计数器LPM模块文本代码的调用模块文本代码的调用(1)打开打开LPM宏功能块调用管理器宏功能块调用管理器:单击:单击Next,左栏中有各,左栏中有各类功能的类功能的LPM模块选项目录。单击算术项模块选项目录。单击算术项Arithmetic,选择,选择LPM_COUNTER。在右上角选择。在右上角选择Cyclone III器件系列和器件系列和Verilog HDL语言方式。键入模块文件存放路径和文件名。语言方式。键入模块文件存放路径和文件名。 E D A技术与应用7.1 计数器计数器LPM宏宏模块模块调用调用7.1.1 计数器计数器LPM模块文本代码的调用模块文本代码的调

4、用(2)设置设置4位可加减计数器位可加减计数器:单击:单击Next,选择,选择4位计数器,再位计数器,再选择选择Create an updown input port to allow me to do both,使,使计数器有加减控制功能。计数器有加减控制功能。 E D A技术与应用7.1 计数器计数器LPM宏宏模块模块调用调用7.1.1 计数器计数器LPM模块文本代码的调用模块文本代码的调用(3)设定计数器,含时钟使能和进位输出设定计数器,含时钟使能和进位输出:单击:单击Next,选中,选中Modulus,并选择,并选择12,表示模,表示模12计数器(若选择计数器(若选择Plain bin

5、ary表示普通二进制计数器),选择时钟使能控制表示普通二进制计数器),选择时钟使能控制Clock Enable和和进位输出进位输出Carry-out。 E D A技术与应用7.1 计数器计数器LPM宏宏模块模块调用调用7.1.1 计数器计数器LPM模块文本代码的调用模块文本代码的调用(4)加入加入4位并行数据预置功能位并行数据预置功能:单击:单击Next,选择,选择4位数据位数据同同步步加载控制加载控制Load和异步和异步清清0控制控制Clear。再单击。再单击Next结束设置。结束设置。生成生成LPM计数器的计数器的Verilog文件文件CNT4B.v,可被高一层次的,可被高一层次的Veri

6、log程序作为计数器元件调用。程序作为计数器元件调用。 E D A技术与应用7.1.2 LPM计数器代码与参数传递语句计数器代码与参数传递语句 例例7-1:LPM计数器代码计数器代码 module CNT4B (aclr, clk_en, clock, data, sload, updown, cout, q); input aclr, clk_en; /异步清异步清0,1清清0;时钟使能;时钟使能,1使能使能,0禁止禁止 input clock, sload; /时钟输入;同步预置数加载控制时钟输入;同步预置数加载控制,1加载加载,0禁止禁止 input 3: 0 data; input u

7、pdown;/4位预置数和加减控制位预置数和加减控制,1加加,0减减 output cout; output 3: 0 q;/进位输出和进位输出和4位计数输出位计数输出 wire sub_wire0; wire 3: 0 sub_wire1;/定义内部连线定义内部连线 wire cout=sub_wire0; wire 3: 0 q=sub_wire1 3: 0; /注意例化语句中未用端口必须接上指定电平注意例化语句中未用端口必须接上指定电平 lpm_counter lpm_counter_component (.sload(sload), .clk_en(clk_en), .aclr(acl

8、r), .data(data), .clock(clock), .updown(updown), .cout(sub_wire0), .q(sub_wire1), .aload(1b0), .aset(1b0), .cin(1b1), .cnt_en(1b1), .eq(), .sclr(1b0), .sset(1b0); defparam lpm_counter_component.lpm_direction=“UNUSED”,/单方向计数参数未用单方向计数参数未用 lpm_counter_component.lpm_modulus=12,/模模12计数器计数器 lpm_counter_co

9、mponent.lpm_port_updown=“PORT_USED”,/使用加减计数使用加减计数 lpm_counter_component.lpm_type=“LPM_COUNTER”,/计数器类型计数器类型 lpm_counter_component.lpm_width=4;/计数位宽计数位宽endmodule E D A技术与应用 例化语句中,例化语句中,未设定的端口必须接上特定的电平未设定的端口必须接上特定的电平。 计数器模块计数器模块lpm_counter是一个可设定参数的封闭模块,只是一个可设定参数的封闭模块,只能通过参数传递说明语句能通过参数传递说明语句defparam将用户设

10、定的参数通过将用户设定的参数通过文件文件CNT4B.v传递进传递进lpm_counter中。中。defparam .= 是例化语句中为被调用元件取的例化是例化语句中为被调用元件取的例化名。名。 是被调用元件的设计文件中已定义参数名。是被调用元件的设计文件中已定义参数名。 可以是整数、操作表达式、字符串或在当前模块可以是整数、操作表达式、字符串或在当前模块中已定义的参数。中已定义的参数。 defparam语句只能将参数传递到比当前层次仅低一层的元语句只能将参数传递到比当前层次仅低一层的元件文件中,即当前的例化文件中,不能更深入进去。件文件中,即当前的例化文件中,不能更深入进去。 E D A技术与

11、应用 例例7-2:24位寄存器(位寄存器(defparam语句应用示例)语句应用示例) module REG24B (input 23: 0 d, input clk, output23: 0 q); lpm_ff U1 (.q(q11: 0, .data(d11: 0), .clock(clk);defparam U1.lpm_width=12; lpm_ff U2 (.q(q23: 12), .data(d23: 12), .clock(clk);defparam U2.lpm_width=12;endmoduleLPM_FF是可参数设置的是可参数设置的LPM寄存器模块。寄存器模块。 例例

12、7-3: LPM计数器顶层设计计数器顶层设计 module CNT4BIT (RST, ENA, CLK, DIN, SLD, UD, COUT, DOUT); input RST, ENA, CLK, SLD, UD; input 3: 0 DIN; output COUT; output3: 0 DOUT; CNT4B U1 (.sload(SLD), .clk_en(ENA), .aclr(RST), .cout(COUT), .clock(CLK), .data(DIN), .updown(UD), .q(DOUT);endmodule E D A技术与应用7.1.3 创建工程与仿真测

13、试创建工程与仿真测试CNT4BIT仿真波形仿真波形CNT4B原理原理图输入设计图输入设计SLD是同步信号,是同步信号,SLD=1但但CLK无上升沿,无上升沿,所以没有进行加载所以没有进行加载可利用可利用LPM计数器宏模块的原理图文件计数器宏模块的原理图文件CNT4B.bsf,通过在原理图工程中调用此元件来测试它通过在原理图工程中调用此元件来测试它 E D A技术与应用7.2 利用属性控制乘法器的构建利用属性控制乘法器的构建如果按照如果按照Verilog通常的表述方式,综合出的乘法器一定会占通常的表述方式,综合出的乘法器一定会占用大量的逻辑资源,且运行速度不一定快。在用大量的逻辑资源,且运行速度

14、不一定快。在FPGA开发中,开发中,最常用的方法是直接调用最常用的方法是直接调用FPGA内部已嵌入的内部已嵌入的硬件乘法器硬件乘法器(DSP模块)模块)。 例例7-4:8位普通乘法器(乘法操作符)位普通乘法器(乘法操作符) module MULT8 (A1, B1, A2, B2, R1, R2); output signed 15: 0 R1, R2; /定义有符号数据类型输出定义有符号数据类型输出 input signed 7: 0 A1, B1, A2, B2; /定义有符号数据类型输入定义有符号数据类型输入 wire 15: 0 R2 /*synthesis multstyle=“lo

15、gic”*/; wire 15: 0 R1/*synthesis multstyle=“dsp”*/; assign R1=A1*B1; assign R2=A2*B2;endmodule E D A技术与应用 wire 15: 0 R2 /* synthesis multstyle=“logic” */; 指示综合器将以指示综合器将以R2为输出口的乘法器以为输出口的乘法器以纯组合逻辑纯组合逻辑方式的方式的宏单元构建,宏单元构建,logic是属性关键词。是属性关键词。 wire 15: 0 R1 /* synthesis multstyle=“dsp” */; 指示综合器将以指示综合器将以R1

16、为输出口的乘法器调用为输出口的乘法器调用FPGA的的嵌入式嵌入式乘法器乘法器来构建乘法器,来构建乘法器, dsp是是属性关键词属性关键词。module andd(A1, B2, A2, B2, R1, R2) /* synthesis multstyle=“dsp” */; 指示综合器将指示综合器将整个模块整个模块内的乘法器构建方式都用内的乘法器构建方式都用DSP模块。模块。 E D A技术与应用 如果如例如果如例7-4采用纯组合逻辑方式构建一个乘法器,用采用纯组合逻辑方式构建一个乘法器,用DSP模块构建另一个乘法器,则编译可以看出,使用了模块构建另一个乘法器,则编译可以看出,使用了1个嵌入个

17、嵌入式式9位位DSP模块和模块和95个逻辑宏单元。个逻辑宏单元。 如果将整个模块都用如果将整个模块都用DSP模块构建。则编译后可以看出,模块构建。则编译后可以看出,使用了使用了2个个DSP模块和模块和0个逻辑宏单元。个逻辑宏单元。采用采用DSP模块构建所设计的电路,更加高速且节省逻辑资源。模块构建所设计的电路,更加高速且节省逻辑资源。 E D A技术与应用通过通过Quartus II设置设置DSP模块构建模块构建:AssignmentsSetting,在,在左栏选择左栏选择Analysis&Synthesis Settings项,在对话框中按项,在对话框中按More Settings按

18、钮,在弹出的对话框中选择按钮,在弹出的对话框中选择DSP Block Balancing项项的的DSP blocks。 E D A技术与应用7.3 LMP_RAM宏模块的设置与使用宏模块的设置与使用在涉及在涉及RAM和和ROM等存储器应用的设计开发中,调用等存储器应用的设计开发中,调用LPM模块类存储器是最方便、最经济高效和性能最容易满足设计模块类存储器是最方便、最经济高效和性能最容易满足设计要求的途径。要求的途径。7.3.1 初始化文件及其生成初始化文件及其生成 初始化文件初始化文件是可配置于是可配置于LPM_RAM或或LPM_ROM中的数据中的数据或程序代码。或程序代码。 初始化文件的格式

19、必须满足一定的要求初始化文件的格式必须满足一定的要求。.mif格式和格式和.hex格格式是式是Quartus II能直接调用的两种初始化文件的格式,能直接调用的两种初始化文件的格式,.dat格式文件可通过格式文件可通过Verilog语言直接调用。语言直接调用。 E D A技术与应用(1)直接编译法直接编译法: 在在Quartus II中选择中选择FileNew,选择,选择Memory File栏的栏的Memory Initialization File项,单击项,单击OK,产生,产生.mif数据文件大数据文件大小选择窗口。根据存储器的地址和数据宽度选择参数(如果小选择窗口。根据存储器的地址和数

20、据宽度选择参数(如果地址线宽为地址线宽为7位,选位,选Number为为128;数据线宽为;数据线宽为8位,选择位,选择Word size为为8位)。单击位)。单击OK,出现,出现mif数据表格。数据表格。1. .mif格式文件格式文件 E D A技术与应用(1)直接编译法直接编译法: 可可在在mif数据表格中键入数据。数据表格中键入数据。表格表格中的中的数据格式数据格式可通过右击可通过右击窗口边缘的地址数据所弹出的窗口边缘的地址数据所弹出的窗口中选择。窗口中选择。 表中任一数据对应的地址为左表中任一数据对应的地址为左列数与顶行数之和。列数与顶行数之和。 完成完成数据输入后,选择数据输入后,选择

21、FileSave As,保存此数据文,保存此数据文件,如取名为件,如取名为data7X8.mif。1. .mif格式文件格式文件 E D A技术与应用(2)文件直接编辑法文件直接编辑法:使用使用Quartus II以外的编辑器设计以外的编辑器设计.mif文件文件 例例7-5:编辑器设计:编辑器设计.mif文件文件 DEPTH=128;:数据深度,即存储的数据个数:数据深度,即存储的数据个数WIDTH=8;:输出数据宽度:输出数据宽度ADDRESS_RADIX=HEX;:地址数据类型,:地址数据类型,HEX表示选择十六进制表示选择十六进制 数据类型数据类型DATA_RADIX=HEX;:存储:存

22、储数据类型,数据类型,HEX表示选择十六进制表示选择十六进制数据数据 类型类型CONTENT:此为关键词:此为关键词BEGIN:此为关键词:此为关键词0000 : 0080;0001 : 0086;0002 : 008C;(数据略去)(数据略去)007E : 0073;007F : 0079;END; E D A技术与应用(3)高级语言生成高级语言生成:.mif也可用也可用C或或Matlab等高级语言或工具生成。等高级语言或工具生成。(4)专用专用.mif文件生成器文件生成器: 用用.mif文件生成器来生成不同波形、不同数据格式、不文件生成器来生成不同波形、不同数据格式、不同符号、不同相位的同

23、符号、不同相位的.mif文件。文件。某某ROM的数据线宽为的数据线宽为8位,地址线宽为位,地址线宽为7位位(可放置(可放置128个个8位数位数据),或者说一个周期据),或者说一个周期分为分为128个点,每个点个点,每个点精度为精度为8位二进制数,位二进制数,初相位为初相位为0的正弦波信的正弦波信号波形数据号波形数据 E D A技术与应用(1)FileNew,选择,选择Memory File栏栏的的Hexadecimal (Intel-Format) File项项,单击,单击OK 。根据存储器的地址和数据宽度选择。根据存储器的地址和数据宽度选择参数。在参数。在hex数据数据表格中键入表格中键入数

24、据数据,最后存盘为最后存盘为.hex格式文件。格式文件。2. .hex格式文件格式文件(2)用诸如单片机编译器来产生,方式是利用汇编程序编)用诸如单片机编译器来产生,方式是利用汇编程序编辑器将数据编辑于汇编程序中,用汇编编译器生成辑器将数据编辑于汇编程序中,用汇编编译器生成.hex格式格式文件。文件。 E D A技术与应用.dat格式的数据文件最具有一般性,前两种文件格式必须使用格式的数据文件最具有一般性,前两种文件格式必须使用Quartus II规定的属性表述,而规定的属性表述,而.dat格式的数据文件的调用可格式的数据文件的调用可用标准用标准Verilog语句直接实现。语句直接实现。3.

25、.dat格式文件格式文件 00 E5 6D 34 E D A技术与应用7.3.2 以原理图方式对以原理图方式对LPM_RAM进行进行设置和调用设置和调用 首先打开一个原理图编辑窗,再存盘,假设文件取名为首先打开一个原理图编辑窗,再存盘,假设文件取名为RAMMD,并将其创建成工程。在此工程的原理图编辑窗,并将其创建成工程。在此工程的原理图编辑窗,单击左下的单击左下的MegaWizard Plug-In Manager管理器按钮,进管理器按钮,进入入LPM模块编辑调用窗。在左栏选择模块编辑调用窗。在左栏选择Memory Compiler项项下的单口下的单口RAM模块模块“RAM:1-PORT”,文

26、件取名为,文件取名为RAM1P.v。 E D A技术与应用7.3.2 以原理图方式对以原理图方式对LPM_RAM进行进行设置和调用设置和调用 单击单击Next,选择数据位,选择数据位8和数据深度和数据深度128,对应,对应CycloneIII,存储器构建方式选择存储器构建方式选择M9K,再选择双时钟方式。,再选择双时钟方式。 E D A技术与应用7.3.2 以原理图方式对以原理图方式对LPM_RAM进行进行设置和调用设置和调用 单击单击Next,去掉选项,去掉选项“q output port”前的钩,即选择时前的钩,即选择时钟只控制锁存输入信号。钟只控制锁存输入信号。 单击单击Next,出现三

27、个选项,当允许写入时,读出的数据是,出现三个选项,当允许写入时,读出的数据是新写入的数据(新写入的数据(New Data),还是写入前的数据(),还是写入前的数据(Old Data),还是无所谓(),还是无所谓(Dont Care)。这里选)。这里选Old Data。 E D A技术与应用7.3.2 以原理图方式对以原理图方式对LPM_RAM进行进行设置和调用设置和调用 单击单击Next,在,在Do you want to specify the initial content of the memory栏中选择栏中选择“Yes, use this file for the memory co

28、ntent date”,并单击,并单击Browse,选择指定路径上的初始化,选择指定路径上的初始化文件文件DATA7X8.mif。选中。选中“Allow In-System Memory”复选框,并在复选框,并在The instance ID of this RAM is文本框中输入文本框中输入某某4字文字,如字文字,如“MYRM”作为此作为此RAM的的ID名称。单击名称。单击Finish完成完成RAM定制。定制。 E D A技术与应用7.3.2 以原理图方式对以原理图方式对LPM_RAM进行进行设置和调用设置和调用 调入顶层原理图后,连接好端口引脚。调入顶层原理图后,连接好端口引脚。 E D

29、 A技术与应用7.3.3 测试测试LPM_RAM对对RAM模块进行测试,了解其信号线的功能和加载于其中的模块进行测试,了解其信号线的功能和加载于其中的初始化文件数据是否成功。初始化文件数据是否成功。地址地址A从从0开始开始RAM的仿真波形的仿真波形WREN=0,读,读RAM中数据中数据WREN=1,D中数据被写入中数据被写入RAM,同时读,同时读出的数据仍然是写入前的数据(出的数据仍然是写入前的数据(Old Data)WREN再次为再次为0时,时,随着写入时的地址随着写入时的地址信号和时钟上升沿,信号和时钟上升沿,读出写入的数据。读出写入的数据。 E D A技术与应用7.3.4 存储器的存储器

30、的Verilog代码描述代码描述 例例7-6:RAM模块的纯模块的纯Verilog描述描述 module RAM78 (output wire 7: 0 Q, /定义定义RAM的的8为数据输出端口为数据输出端口 input wire 7: 0 D, /定义定义RAM的的8位数据输入端口位数据输入端口 input wire 6: 0 A, /定义定义RAM的的7位地址输入端口位地址输入端口 input wire CLK, WREN); /定义时钟和写允许控制定义时钟和写允许控制 reg 7: 0 mem 127: 0 /* synthesis ram_init_file=“DATA7X8.mif

31、” */; always (posedge CLK)if (WREN) mem A = D; /在在CLK上升沿将数据口上升沿将数据口D的数据的数据 锁入地址对应单元中锁入地址对应单元中assign Q = mem A; /同时,地址对应单元的数据被输同时,地址对应单元的数据被输 出至端口出至端口endmodule E D A技术与应用module RAM78 (output wire 7: 0 Q, input wire 7: 0 D, input wire 6:0 A, input wire CLK, WREN);等价于等价于module RAM78 (output 7: 0 Q, inp

32、ut 7: 0 D, input 6:0 A, input CLK, WREN);1. 存储器端口描述存储器端口描述 E D A技术与应用2. 存储器的存储器的Verilog一般描述一般描述 reg 7: 0 mem 127: 0 定义了一个二维矢量变量,包含定义了一个二维矢量变量,包含1024个标量元素,每一元个标量元素,每一元素代表一个逻辑位。换句话说,定义了一个包含素代表一个逻辑位。换句话说,定义了一个包含128个存储个存储单元,每个单元为单元,每个单元为8位的存储器位的存储器mem。 此存储器由此存储器由128个个8位寄存器构成的阵列来构建,至少包含位寄存器构成的阵列来构建,至少包含1

33、024个触发器。个触发器。 用用Verilog定义存储器时,需定义存储器容量和字长。定义存储器时,需定义存储器容量和字长。容量容量表示存储器存储单元的数量或存储深度(如表示存储器存储单元的数量或存储深度(如128个),个),字长字长是每个存储单元的数据宽度(如是每个存储单元的数据宽度(如8)。)。 E D A技术与应用2. 存储器的存储器的Verilog一般描述一般描述 例:例:parameter width=8, msize=1024;reg width-1: 0 MEM87 msize-1: 0; 用用parameter参数定义存储器的容量大小,可十分容易地修参数定义存储器的容量大小,可十

34、分容易地修改存储器的尺寸。改存储器的尺寸。 对存储器赋值要求对存储器赋值要求只能对存储器的某一单元赋值只能对存储器的某一单元赋值。 例:例:reg7: 0 mem87128: 0;mem8716=8b11001001; /mem87存储器第存储器第16单元被赋值为单元被赋值为 二进制数二进制数11001001mem87122=76; /mem87存储器第存储器第122单元被赋值为单元被赋值为 十进制数十进制数76 E D A技术与应用2. 存储器的存储器的Verilog一般描述一般描述 例:例:reg15: 0 A; /定义了一个定义了一个16位的寄存器位的寄存器reg MEM15: 0; /

35、定义了定义了 一个字长为一个字长为1,即,即1位的,容量深度位的,容量深度 为为16的存储器的存储器 注意寄存器和存储器定义上的区别。注意寄存器和存储器定义上的区别。 尽管以上定义在实现的结构上没有区别,但在定义的含义和尽管以上定义在实现的结构上没有区别,但在定义的含义和赋值的语法上有区别。赋值的语法上有区别。不允许对存储器多个或所有单元同时不允许对存储器多个或所有单元同时赋值赋值。 例:例:A5 =1b0;/允许对寄存器允许对寄存器A的第的第5位赋值位赋值0MEM7=1b1;/允许对存储器允许对存储器MEM的第的第7个单元赋值个单元赋值1A=16hABCD;/允许对寄存器允许对寄存器A整体赋

36、值整体赋值MEM=16hABCD;/错误!不允许对存储器多个或所有单错误!不允许对存储器多个或所有单元同时赋值元同时赋值 E D A技术与应用3. 存储器中初始化文件的调用与配置存储器中初始化文件的调用与配置在纯代码的在纯代码的Verilog程序中的存储器中调用初始化文件。程序中的存储器中调用初始化文件。 第一种方法:利用第一种方法:利用Quartus II给定的属性语句给定的属性语句,仅限于,仅限于Quartus II平台中使用。平台中使用。reg7: 0 mem127: 0 /* synthesis ram_init_file=“DATA7X8.mif” */;(* synthesis r

37、am_init_file=“DATA7X8.mif” *) reg7: 0 mem127: 0; 第二种方法:利用第二种方法:利用过程语句过程语句initial和和系统函数系统函数$readmemh,采用的是标准的采用的是标准的Verilog语句,不局限于语句,不局限于Quartus II平台。平台。 initial $readmemh (“RAM78_DAT.dat”, mem); $readmemh()是存储器初始化文件的系统函数。是存储器初始化文件的系统函数。“”“”括括起来的起来的是待调用的初始化文件的文件名。是待调用的初始化文件的文件名。逗号旁的逗号旁的mem是存储器名称。是存储器名

38、称。 E D A技术与应用 例例7-7:RAM模块的纯模块的纯Verilog描述描述(利用过程语句(利用过程语句initial和系统函数和系统函数$readmemh调用初始化文件)调用初始化文件) module RAM78 (output 7: 0 Q, input 7: 0 D, input 6: 0 A, input CLK, WREN); reg 7: 0 mem 0: 127; always (posedge CLK) if (WREN) mem A = D; assign Q = mem A; initial $readmemh (“RAM78_DAT.dat”, mem);endm

39、odule 使用的是过程语句使用的是过程语句initial和系统函数和系统函数$readmemh,因此初始,因此初始化数据文件的格式必须是化数据文件的格式必须是.dat文件。文件。 注意,综合器只会以注意,综合器只会以.dat文件中的数据排列顺序对应的形式文件中的数据排列顺序对应的形式加载到加载到mem0: 127存储器在,而存储器在,而.dat文件中的数据排列顺文件中的数据排列顺序默认从低位地址开始排列,因此这里序默认从低位地址开始排列,因此这里mem的表述格式是的表述格式是mem0: 127 E D A技术与应用4. 语句语法说明语句语法说明initial begin 语句语句1;语句;语

40、句2; end initial过程语句。过程语句。 没有敏感信号表没有敏感信号表,不带触发条件不带触发条件,initial过程中的块语句沿过程中的块语句沿时间方向轴时间方向轴只执行一次只执行一次。 最最常用于仿真模块中常用于仿真模块中对激励矢量的描述对激励矢量的描述,或用于,或用于给寄存器变给寄存器变量赋初值量赋初值。而在实际电路中,赋初值是没有意义的,因此这。而在实际电路中,赋初值是没有意义的,因此这是是面向模拟仿真面向模拟仿真的过程语句,通常的过程语句,通常不能被综合工具所接受不能被综合工具所接受,或在或在综合时被忽略综合时被忽略,但却可以,但却可以对存储器加载初始化文件对存储器加载初始化

41、文件,这,这是是可综合可综合行为。行为。 E D A技术与应用4. 语句语法说明语句语法说明initial $readmemh();/用于十六进制数据文件的读取用于十六进制数据文件的读取initial $readmemb();/用于二进制数据文件的读取用于二进制数据文件的读取 Verilog语言内置了一些系统函数,这些系统函数经常与语言内置了一些系统函数,这些系统函数经常与Verilog的预编译语句联合使用,主要用于的预编译语句联合使用,主要用于Verilog仿真验证。仿真验证。 系统任务和系统函数的名字都是用系统任务和系统函数的名字都是用“$”字母开头。字母开头。 E D A技术与应用7.3

42、.5 存储器设计的结构控制存储器设计的结构控制 例例7-8:以嵌入式:以嵌入式RAM单元构建的存储器单元构建的存储器 module RAM78 (output 7: 0 Q, input 7: 0 D, input 6: 0 A, input CLK, WREN); reg 7: 0 mem 127: 0 /* synthesis ram_init_file=“DATA7X8.mif” */; always (posedge CLK) if (WREN) mem A = D; always (posedge CLK) Q=memA;endmodule例例7-6采用逻辑宏单元构采用逻辑宏单元构建

43、的存储器的建的存储器的RTL图图例例7-8采用嵌入式采用嵌入式RAM单单元构建的存储器的元构建的存储器的RTL图图 E D A技术与应用 例例7-6花费了花费了1497个逻辑宏单元,并使用了个逻辑宏单元,并使用了1024个专用寄存器个专用寄存器(D触发器模块),未使用任何触发器模块),未使用任何RAM单元;例单元;例7-8使用了使用了1024个个RAM单元,未使用逻辑宏单元。单元,未使用逻辑宏单元。 以嵌入式以嵌入式RAM单元构建的存储器节省了大量的逻辑资源,具单元构建的存储器节省了大量的逻辑资源,具有最好的资源利用率,而且模块的速度和可靠性也大为增加。有最好的资源利用率,而且模块的速度和可靠

44、性也大为增加。例例7-6采用逻辑宏单元构采用逻辑宏单元构建的存储器的编译报告建的存储器的编译报告例例7-8采用嵌入式采用嵌入式RAM单元单元构建的存储器的编译报告构建的存储器的编译报告 E D A技术与应用(1)Verilog的表述形式的表述形式。例。例7-6对存储器的输出对存储器的输出Q,采用了连,采用了连续赋值语句,所以续赋值语句,所以RAM数据端口是直接对外的,其输出口没数据端口是直接对外的,其输出口没有任何锁存电路,这样的结构描述无法使用有任何锁存电路,这样的结构描述无法使用FPGA现成的现成的RAM位。例位。例7-8使用了两个使用了两个过程语句过程语句,且敏感信号都是,且敏感信号都是

45、CLK上上升沿,特别是升沿,特别是Q的输出增加了一个的输出增加了一个CLK信号控制的信号控制的锁存器锁存器,这,这样的描述恰好满足了样的描述恰好满足了FPGA内部内部RAM单元的这种结构。单元的这种结构。例例7-6和例和例7-8的区别:的区别:例例7-6采用逻辑宏单元构采用逻辑宏单元构建的存储器的建的存储器的RTL图图例例7-8采用嵌入式采用嵌入式RAM单单元构建的存储器的元构建的存储器的RTL图图 E D A技术与应用(2)调用嵌入式调用嵌入式RAM单元的约束设置单元的约束设置。正确恰当的。正确恰当的Verilog描描述是综合器能调用述是综合器能调用FPGA内内RAM单元的基础,却不一定能保

46、单元的基础,却不一定能保证这项设计会自动调用证这项设计会自动调用RAM单元。必须对单元。必须对EDA工具的综合器工具的综合器作必要的约束设置。方法是:作必要的约束设置。方法是:AssignmentsSettings,在左栏,在左栏选择选择Analysis&Synthesis Settings项,单击项,单击More Setting按钮,按钮,在弹出的对话框中选择在弹出的对话框中选择Auto RAM Replacement项的项的On,即设,即设置了置了RAM单元的自动替代控制功能。单元的自动替代控制功能。例例7-6和例和例7-8的区别:的区别: E D A技术与应用7.4 LPM_RO

47、M的定制和使用示例的定制和使用示例7.4.1 LPM_ROM的调用的调用(1)创建一个原理图)创建一个原理图工程文件(假设工程名工程文件(假设工程名为为SIN_GNT)。)。(2)在原理图编辑窗)在原理图编辑窗双击,跳出双击,跳出Symbol对对话框,单击话框,单击MegaWizard Plug-In Manager按钮按钮。 E D A技术与应用7.4 LPM_ROM的定制和使用示例的定制和使用示例7.4.1 LPM_ROM的调用的调用(3)选择)选择Memory Compiler的的ROM:1-PORT项,设文件名为项,设文件名为ROM78,FPGA是是Cyclone III系列,文本表述

48、选择系列,文本表述选择Verilog。 E D A技术与应用7.4 LPM_ROM的定制和使用示例的定制和使用示例7.4.1 LPM_ROM的调用的调用(4)设置此)设置此ROM模块的参数。模块的参数。 E D A技术与应用7.4 LPM_ROM的定制和使用示例的定制和使用示例7.4.1 LPM_ROM的调用的调用(4)设置此)设置此ROM模块的参数。模块的参数。 E D A技术与应用7.4 LPM_ROM的定制和使用示例的定制和使用示例7.4.1 LPM_ROM的调用的调用(5)配置初始化文件,使用上一节设置的正弦波数据初始化)配置初始化文件,使用上一节设置的正弦波数据初始化文件文件DATA

49、7X8.mif。 E D A技术与应用7.4.2 简易正弦信号发生器设计简易正弦信号发生器设计 计数器或地址信号发生器计数器或地址信号发生器:由:由7位计数器担任,位计数器担任,7位输出。位输出。 正弦信号数据存储器正弦信号数据存储器ROM:由:由LPM_ROM模块构成,模块构成,7位位地址线,地址线,8为数据线,含有为数据线,含有128个个8位波形数据(一个正弦波位波形数据(一个正弦波形周期)。形周期)。 工程工程SIN_GNT顶层原理图设计顶层原理图设计:由地址信号发生器和正弦:由地址信号发生器和正弦数据数据ROM组成。组成。 8位位D/A。 E D A技术与应用7.4.2 简易正弦信号发

50、生器设计简易正弦信号发生器设计 地址发生器的时钟地址发生器的时钟CLK的输入频率的输入频率f0与每周期的波形数据与每周期的波形数据点数(点数(128点),以及点),以及D/A输出的频率输出的频率f的关系是:的关系是:f=f0/128。 设计设计顶层文件,创建工程,全程编译,顶层文件,创建工程,全程编译,RTL电路图,仿真,电路图,仿真,时序分析,引脚锁定,编译下载,在系统读写测试和嵌入时序分析,引脚锁定,编译下载,在系统读写测试和嵌入式逻辑分析仪测试。式逻辑分析仪测试。顶层设计原理图顶层设计原理图电路仿真波形电路仿真波形 E D A技术与应用7.4.3 正弦信号发生器硬件实现和测试。正弦信号发

51、生器硬件实现和测试。假设使用假设使用55F+板,使用嵌入式逻辑分析仪测试和观察输出波形板,使用嵌入式逻辑分析仪测试和观察输出波形引脚锁定引脚锁定: CLK-专用输入口(引脚专用输入口(引脚 G1) Q7: 0-8个个I/O端口端口(引脚(引脚Y15,AB14,AB13,Y13,AA13,AA14,AB15,AA15) RST-键键K1(引脚(引脚AA3) EN-键键K2(引脚(引脚AB3) E D A技术与应用7.4.3 正弦信号发生器硬件实现和测试。正弦信号发生器硬件实现和测试。假设使用假设使用55F+板,使用嵌入式逻辑分析仪测试和观察输出波形板,使用嵌入式逻辑分析仪测试和观察输出波形Sig

52、nalTap II参数设置参数设置: 采样采样深度:深度:4K 采样采样时钟:信号源时钟时钟:信号源时钟CLK 触发触发信号:技术使能控制信号:技术使能控制EN=1SignalTap II实时测试图实时测试图SignalTap II波形显示图波形显示图 E D A技术与应用7.5 在系统存储器数据读写编辑器应用在系统存储器数据读写编辑器应用 功能功能:直接通过:直接通过JTAG口读取或改写口读取或改写FPGA内处于工内处于工作状态的存储器中的数据,读取过程不影响作状态的存储器中的数据,读取过程不影响FPGA的的正常工作。正常工作。 用处用处:在系统了解:在系统了解ROM中加载的数据,读取基于中

53、加载的数据,读取基于EAB/M9K的的RAM中采样获得的数据,对嵌入在由中采样获得的数据,对嵌入在由FPGA资源构建的资源构建的CPU中的数据中的数据RAM和程序和程序ROM中中的信息读取和数据修改等。的信息读取和数据修改等。 E D A技术与应用以以7.4节的简易正弦信号发生器为例节的简易正弦信号发生器为例(1)打开在系统存储单元编辑窗口打开在系统存储单元编辑窗口:使计算机与开发板上:使计算机与开发板上FPGA的的JTAG口处于正常连接状态。打开工程口处于正常连接状态。打开工程SIN_GNT,下,下载载SOF文件。文件。ToolIn-System Memory Content Editor,

54、在弹,在弹出的编辑窗口,单击右上角出的编辑窗口,单击右上角Setup,在弹出的,在弹出的Hardware Setup对话框中选择对话框中选择Hardware Settings选项卡,双击选项卡,双击USB-Blaster,单击单击Close,编辑窗口会显示,编辑窗口会显示USB-Blaster和器件的型号。和器件的型号。 E D A技术与应用以以7.4节的简易正弦信号发生器为例节的简易正弦信号发生器为例(2)读取读取ROM中的数据中的数据:在编辑窗口中先选中窗口左上角:在编辑窗口中先选中窗口左上角的的ID名名ROM8,再单击上排的一个向上的小箭头按钮,再单击上排的一个向上的小箭头按钮(或(或使

55、使用在系统存储单元编辑用在系统存储单元编辑窗口中的菜单窗口中的菜单ProcessingRead Data from In-System Memory),下方出现通过),下方出现通过JTAG口从口从FPGA内内部部ROM中读出的波形数据。中读出的波形数据。通过通过JTAG口从口从FPGA内部内部ROM中读出来中读出来的波形数据,应该与加载进去的的波形数据,应该与加载进去的正弦波数正弦波数据初始化文件据初始化文件DATA7X8.mif一致。一致。 E D A技术与应用以以7.4节的简易正弦信号发生器为例节的简易正弦信号发生器为例(3)写数据写数据:在图形编辑窗口中,编辑波形数据,再:在图形编辑窗口

56、中,编辑波形数据,再选中窗选中窗口左上角的口左上角的ID名名ROM8,单击上排的一个向下的小箭头按钮,单击上排的一个向下的小箭头按钮(或使用在系统存储单元编辑或使用在系统存储单元编辑窗口中的菜单窗口中的菜单Processing Write Data to In-System Memory),将编辑后所有的数据通),将编辑后所有的数据通过过JTAG口下载于口下载于FPGA中的中的LPM_ROM中,可从示波器和中,可从示波器和SignalTap II上同步观察到波形的变化。上同步观察到波形的变化。SignalTap II采样波形采样波形 E D A技术与应用以以7.4节的简易正弦信号发生器为例节的

57、简易正弦信号发生器为例(4)输入输出数据文件输入输出数据文件:使用:使用在系统存储单元编辑在系统存储单元编辑窗口中的窗口中的菜单菜单EditExport Data to File或或EditImport Data from File,将在系统读出的数据以将在系统读出的数据以.mif或或.hex的格式文件存入计算机中,的格式文件存入计算机中,或将此类格式的文件再系统地下载到或将此类格式的文件再系统地下载到FPGA中去。中去。 E D A技术与应用7.6 LPM嵌入式锁相环调用嵌入式锁相环调用 嵌入式模拟锁相环嵌入式模拟锁相环:可与一输入的时钟信号同步,:可与一输入的时钟信号同步,并以其作为参考信

58、号实现锁相,从而输出一至多个并以其作为参考信号实现锁相,从而输出一至多个同步倍频或分频的片内时钟,以供逻辑系统应用。同步倍频或分频的片内时钟,以供逻辑系统应用。 优点优点:与直接来自外部的时钟相比,这种锁相环片:与直接来自外部的时钟相比,这种锁相环片内时钟可减少时钟延时和时钟变形,减少片外干扰;内时钟可减少时钟延时和时钟变形,减少片外干扰;还可改善时钟的建立时间和保持时间,是系统稳定还可改善时钟的建立时间和保持时间,是系统稳定高速工作的保证。高速工作的保证。 能输出含小数的能输出含小数的精确频率精确频率,能提供,能提供任意相移任意相移和和输出输出信号占空比信号占空比。 E D A技术与应用建立

59、片内锁相环建立片内锁相环PLL模块的步骤:模块的步骤:(1)定制一个新模块定制一个新模块:在原理图编辑窗右键单击,选择:在原理图编辑窗右键单击,选择InsertSymbol,进入元件调用对话框,单击,进入元件调用对话框,单击MegaWizard Plug-In Manager按钮。在弹出的窗口中选择按钮。在弹出的窗口中选择Create a new custom选项,定制一个新模块。选项,定制一个新模块。以以7.4节的简易正弦信号发生器为例,在顶层设计中加入锁相环节的简易正弦信号发生器为例,在顶层设计中加入锁相环 E D A技术与应用建立片内锁相环建立片内锁相环PLL模块的步骤:模块的步骤:(1

60、)定制一个新模块定制一个新模块:在左栏选择在左栏选择I/O项下的项下的ALTPLL,再选,再选择择Cyclone III器件和器件和Verilog语言,输入设计文件存放的路径语言,输入设计文件存放的路径和文件名。和文件名。以以7.4节的简易正弦信号发生器为例,在顶层设计中加入锁相环节的简易正弦信号发生器为例,在顶层设计中加入锁相环 E D A技术与应用建立片内锁相环建立片内锁相环PLL模块的步骤:模块的步骤:(2)设置输入时钟频率设置输入时钟频率:单击单击Next, inclk0为为20MHz(55F+开发板上配置了此晶振),有两个独立的专用时钟输入脚分开发板上配置了此晶振),有两个独立的专用时钟输入脚分别是

温馨提示

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

评论

0/150

提交评论