首页 » 互联网 » Quartus II宏功能模块的运用方法(波形发生器的设计)_存储器_波形

Quartus II宏功能模块的运用方法(波形发生器的设计)_存储器_波形

雨夜梧桐 2025-01-11 01:31:20 0

扫一扫用手机浏览

文章目录 [+]

2.3.1 设计事理

波形发生器的事理图如图所示。
个中,lpm_counter0是LPM计数器,LPM_ROM是LPM只读存储器(ROM)。
ROM中保存的是某种波形旗子暗记(如锯齿波或正弦波)的数据,其地址由计数器lpm_counter0供应。
lpm_counter0是一个8位加法计数器,在时钟的掌握下计数器的输出q[7..0]由“00000000”到“11111111”循环变革,使ROM输出周期性的波形旗子暗记的数据 。

Quartus II宏功能模块的运用方法(波形发生器的设计)_存储器_波形 Quartus II宏功能模块的运用方法(波形发生器的设计)_存储器_波形 互联网

波形发生器的事理图

Quartus II宏功能模块的运用方法(波形发生器的设计)_存储器_波形 Quartus II宏功能模块的运用方法(波形发生器的设计)_存储器_波形 互联网
(图片来自网络侵删)

2.3.2 编辑输入顶层设计文件

设计开始时应首先为波形发生器建立新的设计工程,本例的设计工程名为“mydds”,并选择Cyclone II系列的EP2C35F672C6(DE2的目标芯片)作为设计工程的下载目标芯片。
新的工程建立后,在Quartus II集成环境下,实行“File”→“New”命令,打开一个新的“Block Diagram/Schematic File ”(模块/事理图文件)编辑窗口。

1. 加入计数器元件

首先加入“arithmetic”库库中的“lpm_counter”(计数器)LPM元件。
LPM是参数化的多功能库元件,每一种LPM元件都具有许多端口和参数,通过对端口的选择与参数的设置得到设计须要的元件。
计数器元件上有许多端口,实际设计只须要时钟输入clock和数据输出q[]端口。
通过参数设置就可以将不用的端口消去,并对利用端口的参数进行设置。

lpm_counter元件选择窗

选定计数器元件后单击元件选择窗的“OK”按钮,弹出如图所示的“MegaWizard Plug-In Manager[page 2c]”对话框页面。
在该对话框页面中,选择VHDL(或Verilog HDL或AHDL)作为输出文件的类型,并在“What name do you want for the output file ?”栏目中选择或填入天生的计数器名称及保存的文件夹(如D:\myeda\lpm_counter0)。
完成上述操作后,单击“Next”按钮,进入“MegaWizard Plug-In Manager [page 3 of 7] LPM_COUNTER”页面。
在此页面中设置计数器的q输出位数为8bit,时钟输入clock的有效边沿为“Up only”(上升沿有效)。

MegaWizard Plug-In

LPM_COUNTER

单击“Next”按钮,进入“MegaWizard Plug-In Manager [page 4 of 7] LPM_COUNTER”页面。
在此对话框页面中,选择计数器的类型为“Plain binary”(二进制)。
计数器的类型除了二进制外,还可以选择任意模值,如5、10、60等。

单击“Next”按钮,进入“MegaWizard Plug-In Manager [page 5 of 7]LPM_COUNTER”页面。
此页面用于为计数器添加同步或异步输入掌握端,如“Clear”(打消)、“Load”(预置)等。

2. 建立存储器初值设定文件

为了将数据装入ROM中,在加入ROM之前,首先应建立一个存储器初值设定文件(或称为.mif格式文件)。
建立存储器初值设定文件的操作如下:

① 实行“File”→“New”命令,打开一个新的“Memory initialization file”(存储器初值设定文件)编辑窗口,在弹出存储器参数设置对话框中输入存储器的字数(Number of words)为256,字长(Word size)为8位

存储器参数设置对话框

②单击“OK”按钮,弹出存储器初值设定文件的界面,将此文件以.mif为类型属性(如mydds.mif)保存在工程目录中。
在存储器初值设定文件的界面中,右击存储器的某个地址(如0),弹出Address Radix(地址基数)和Memory Radix(存储器基数)选择快捷菜单。
实行“Address Radix”命令可对存储器的地址基数进行选择,地址基数有Binary(二进制)、Decimal(十进制)、Octal(八进制)和Hexadecimal(十六进制)4种选择,本例选择地址基数为“Decimal”。
实行“Memory Radix”命令可对存储器单元中的数据基数进行设置,数据基数有Binary、Hexadecimal、Octal、Signed Decimal和Unsigned Decimal等5种选择,本例的设计选择“Unsigned Decimal” (无符号十进制) 。

存储器初值设定文件的界面

③ 将数据加入存储器初值设定文件中。
新建的存储器初值设定文件中的数据全部为0,在存储器初值设定文件的界面可以直接输入每个存储器字的数据,也可以右击文件,在格式文件操作快捷菜单提示下,完成数据输入。

例如,在格式文件操作快捷菜单中选择“Custom Fill Cells”(块添补)项,弹出“Custom Fill Cells”对话框。
在对话框的“Starting address”栏目内输入起始地址(如00),在“Ending address”栏目内输入结束地址(如255);将“Incrementing/Decrementing”选中后,在“Starting Value”栏目中输入起始值(如0),在“Increment by”(或Decrement by)栏目中输入增加(或减少)值(如1)。
完成上述操作后单击“OK”按钮,结束.mif格式文件中的数据添补,得到一个锯齿波数据。

根据快捷菜单,还可以对格式文件中的数据进行拷贝、粘贴、添补0、添补1等操作。
天生的存储器初值设定文件(mydds.mif)的格式如下:

WIDTH=8;

DEPTH=256;

ADDRESS_RADIX=UNS;

DATA_RADIX=UNS;

CONTENT BEGIN

//存储器的地址与数据

0 : 0;

1 : 1;

2 : 2;

//以下252行数据省略

254 : 254;

255 : 255;

END;

用上述方法只能天生一些大略的波形数据,对付繁芜的波形(如正弦波)的数据,须要在存储器初值设定文件的界面上一个一个地将数据填入。
利用C措辞程序也可以天生存储器初值设定文件(.mif)中的数据,例如天生正弦波数据的C措辞源程序(myram.c)如下:

#include <stdio.h>

#include \"大众math.h\"大众

main()

{int i,k;

for(i=0;i<256;i++)

{k=128+128sin(360.0i/256.03.1415926/180);

printf(\"大众%d : %d;\n\公众,i,k);

}

return;

}

在C措辞编译软件环境下将myram.c文件通过编译并运行后,在DOS(Windows的命令提示符)环境下实行命令:

myram > myram_1.mif

则将myram文件运行的结果保存在myram_1.mif文件(该文件可以任意命名,也可以不加文件属性)中。
以“记事本”办法打开myram_1.mif文件,将其地址和数据部分的内容(共256行)复制到以记事本办法打开的存储器初值设定文件(mydds.mif)中,更换源文件中的地址和数据。

把稳:如果原来的存储器初值设定文件(.mif)中的地址基数选用“Hexadecimal” (十六进制),而用C措辞程序天生的地址基数是十进制,因此须要把mydds.mif中的“ADDRESS_RADIX=HEX;”语句修正为“ADDRESS_RADIX=DEC;”,表示地址基数为十进制,而原来的存储器初值设定文件中的地址基数选用十进制,则不须要修正。
在Quartus Ⅱ环境下打开修正后的mydds.mif,其存储的数据即为正弦波的数据。

3. 加入只读存储器ROM元件

在弹出的元件选择窗的“Libraries”栏目中展开“megafunction”的“storage”库,选中库中的“lpm_rom”(只读存储器ROM))元件,单击“OK”按钮完成LPM_ROM元件符号的加入。
双击元件符号右上角属性(property)框,弹出元件符号属性(Symbol Properties)窗口的General页面。
元件符号属性窗口有General(常规)、Port(端口)、Parameter(参数)和Format(格式)4个页面,General页面用于符号名称(Symbol name)和实例名称(Instance name)的设置;Port 页面用于利用或不该用端口的设置;Parameter 页面用于参数的设置;Format 用于格式的设置,如元件符号的线条、字体的颜色等。

在General页面保持的默认的符号名称LPM_ROM和实例名称inst1。
单击元件符号窗口上方的“Port”按钮,进入Port页面。
LPM_ROM一共供应了address(地址)、inclock(时钟输入)、memenab(存储器使能)、outclock(时钟输出)和q[](数据输出)5个端口,在Port页面的status(状态)栏中设置利用或不该用这些端口,在本例设计中,将address、inclock和q[]设置为“Used”(利用),将memenab和outclock设置为“Unused”(不该用)。

单击元件符号窗口的“Parameter”按钮,进入Parameter页面。
该页面有6项参数须要设置。

① 在名称为“LPM_ADDRESS_CONTROL”项的Value(值)框中选择“\公众REGISTERED\"大众”(注册),在Type(数据类型)框中选择Auto(自动)为数据类型。
数据类型有多种,如“Signed Binary”(带符号整型)、 “Unsigned Integer”(无符号整型)、“Octal”(八进制)、“Float”(浮点)等,这些数据类型都可以用“Auto”替代。

②在名称为“LPM_FILE”项的Value框中输入存储器初值文件的名称,本例的设计的名称为“mydds.mif”,在Type框中选择Auto为数据类型。

③在名称为“LPM_NUMWORDS”项的Value框中填入存储器的字数,本例设计的字数为256(即28),在Type框中选择Auto为数据类型。

④在名称为“LPM_OUTDATA”项的Value框中选择“\"大众UNREGISTERED\"大众”(未注册),在Type框中选择Auto为数据类型。

⑤在名称为“LPM_WIDTH”项的Value框中填入存储器的字长,本例设计的字长为“8”,在Type框中选择Auto为数据类型。

⑥在名称为“LPM_WIDTHAD”项的Value框中填入存储器地址的位数,本例设计的地址位数为“8”,在Type框中选择Auto为数据类型。

单击元件属性窗口下方的“OK”按钮,结束LPM_ROM参数属性的设置。

4. 编辑和编译顶层设计文件

在新建的图形编辑窗口中加入计数器lpm_counter0和只读存储器LPM_ROM元件后,还须要加入一个输入(input)元件和两个输出(output)元件,输入元件接于lpm_counter0的clock端,并更名为“clk”,作为电路的时钟输入;一个输出元件接于LPM_ROM的q[]端,并更名为“q[7..0]”,作为8位波形数据输出;一个输出元件接于lpm_counter0的输出q[7..0]端,并更名为“qc[7..0]”,作为另一个8位数据输出端口,由于存储器的地址是从“00000000”递增到“11111111”不断循环,因此这个数据端口输出的是一种锯齿波。
参照波形发生器事理图,完成设计电路的内部连接,然后以“mydds.bdf”为文件名保存在工程目录中,并通过Quartus II的编译。

2.3.3 仿真顶层设计文件

在Quartus II 13.0界面实行“Assignments”→“Settings”命令,在弹出的设置(Settings)窗口,单击选中“EDA Tool Settings”项,对“Simulation”栏眼前的仿真测试文件进行设置和新的测试文件mydds.vho的添加。

实行“Tools”→“Run EDA Simulation Tool”→“RTL Simulation”命令,开始对设计文件的寄存器传输级时序仿真,命令实行后,系统会自动打开ModelSim-Altera 10.1d主界面和波形窗口。
为了便于不雅观察,将波形窗口中q、clk和qc旗子暗记保留,别的旗子暗记删除,然后右击旗子暗记q,实行弹出的Object快捷菜单的“Properties…”命令,弹出波形属性窗口。
在属性窗口将将q的数制基数设置为十六进制(hexadecimal),单击波形属性窗口上方的“Format”按钮,进入波形格式页面,在该页面选中“Analog”(仿照)格式,并在“Max:”栏中填入“300”作为仿照波形显示幅度的最大值,单击“OK”按钮,结束q旗子暗记的波形格式设置。
用同样的方法设置qc旗子暗记为十六进制的仿照波形输出格式。

右击旗子暗记clk,实行弹出的Object快捷→“clock…”命令,弹出“Define Clock”(定义时钟)窗口,在窗口的Period(周期)栏目中将时钟周期改写为10000(默认单位为ps),由于目标芯片的传输延迟在10ns旁边,因此时钟周期小于10000ps时将无法看到设计电路时序仿真的输出波形。
窗口中其他栏目保持默认,单击“OK”按钮,结束clk旗子暗记的设置。

单击波形窗口的“运行全程”按钮,约数秒后单击“停滞”按钮结束仿真,然后单击“全程”按钮,展开仿真波形,用“缩小”或“放大”按钮调度波形窗口,得到便于不雅观察的正弦波和锯齿波仿真波形,仿真波形上的眇小“尖峰”是设计电路的竞争-冒险征象。

设计电路的仿真波形

2.3.4 图形文件的转换

为了使利用Quartus II宏功能模块设计的电路能在其他软件平台运行和验证,可将其转换为硬件描述措辞(HDL)文件。
实行Quartus II主窗口的“File”→“Create/Update”→“Create HDL Design File for Current File”命令,弹出生成HDL文件对话框,选择天生Verilog HDL或VHDL类型文件。
HDL文件类型确定后,单击“OK”按钮,即可为当前的设计天生Verilog HDL或VHDL文件。

天生HDL文件对话框

相关文章