资源预览内容
第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
第9页 / 共17页
第10页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
3.3.23.3.2 基于基于 FPGAFPGA 的典型开发系统设计实例的典型开发系统设计实例-函数信号发生器函数信号发生器1 功能描述 利用 GW48-CK 实验开发系统设计一个函数信号发生器, 要求能够输出三角波、方波、 梯形波、阶梯波等波形,可通过按键选择输出不同波形。 2 设计思路 函数信号发生器的原理框图如图 3-11 所示。FPGA 芯片选用 ACEX 1K30TC144-3, D/A 选用 8 位数模转换器 DAC0832,滤波器采用有源滤波,GW48-CK 实验开发系统选 择模式 5。FPGA 芯片D/A 滤波器图 3-11 多波形函数信号发生器原理框图3系统程序设计首先采用 VHDL 语言分别编写锯齿波(斜降) 、三角波、锯齿波(斜升) 、阶梯波 (上升) 、正弦波、方波、梯形波、双阶梯波以及八选一数据选择器的程序,各程序如下:(1)锯齿波(斜降)程序 LIBRARY IEEE; USE IEEE. STD_LOGIC_1164.ALL; USE IEEE. STD_LOGIC_UNSIGNED.ALL; ENTITY dcrs IS PORT (clk,reset: IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR (7 DOWNTO 0); END dcrs; ARCHITECTURE behave OF dcrs IS BEGINPROCESS (clk,reset)VARIABLE tmp: STD_LOGIC_VECTOR (7 DOWNTO 0);BEGINIF reset=0THENtmp:=“11111111“;ELSIF clkEVENT AND clk=1THENIF tmp=“00000000“THENTmp:=“11111111“;155第 3 章 可编程逻辑器件应用系统设计应用系统设计ELSEtmp:=tmp-1;END IF;END IF;q tmp:=0;when 64 to 127 = tmp:=85; when 128 to 191 = tmp:=170; when 192 to 255 = tmp:=255; when others = tmp:=0; end case; END IF;qclk, address=Q1, q = q); END; 此正弦波形的产生方法是通过调用 FPGA 中的 LPM 兆功能块实现的。LPM 是参数 可设置模块,通过修改 LPM 模块的参数,可以获得不同的逻辑功能,而原理图并不改变, 从而使复杂的电子设计变得简单化,设计的效率和可靠性也有了很大的提高。 利用 LPM 产生正弦信号的原理是先把一个正弦波形按相位量化的幅值存储在 ROM 里,通过查找 ROM,输出相应地址里的幅值,合成一个正弦波。正弦波形数据 ROM 由 LPM_ROM 模块构成。LPM_ROM 中初始化数据文件的格式为.MIF 格式,可以用 C 语言 或 MATLAB 生成.MIF 数据文件。采用 MATLAB 生成 64 点正弦波形数据的具体步骤如 下: 1) 创建正弦波形数据。 在 MATLAB 命令窗口中输入如下命令: a=round(127*sin(0:2*pi/(26):2*pi)+127) 这样就可生成地址为 64、最大幅值为 255 的正弦波形数据,数据内容为 127 139 152 164 176 187 198 208 217 225 233 239 244 249 252 253 254 253 252 249 244 239 233 225 217 208 198 187 176 164 152 139 127 115 102 90 78 67 56 46 37 29 21 15 10 5 2 1 0 1 2 5 10 15 21 29 37 46 56 67 78 90 102 115。 2) 生成.MIF 文件。 在 QUARTUS II 中选择 NewOther FilesMemory Initialization File,选择 ROM 的地址数 Number 为 64,数据宽 Word size 取 8 位,即创建了一个.MIF 的数据表格, 将 MATLAB 中生成的 64 点正弦波数据复制到此表格中,保存并命名为 SIN_ROM,则可 以创建一个.MIF 文件,该 MIF 文件内容如下: WIDTH=8; DEPTH=64; ADDRESS_RADIX=UNS; DATA_RADIX=UNS; CONTENT BEGIN 0 : 127; 1 : 139; 2 : 152; 3 : 164;159第 3 章 可编程逻辑器件应用系统设计应用系统设计4 : 176; 5 : 187; 6 : 198; 7 : 208; 8 : 217; 9 : 225; 10 : 233; 11 : 239; 12 : 244; 13 : 249; 14 : 252; 15 : 253; 16 : 254; 17 : 253; 18 : 252; 19 : 249; 20 : 244; 21 : 239; 22 : 233; 23 : 225; 24 : 217; 25 : 208; 26 : 198; 27 : 187; 28 : 176; 29 : 164; 30 : 152; 31 : 139; 32 : 127; 33 : 115; 34 : 102; 35 : 90; 36 : 78; 37 : 67; 38 : 56; 39 : 46; 40 : 37; 41 : 29; 42 : 21;160现代电子系统设计教程43 : 15; 44 : 10; 45 : 5; 46 : 2; 47 : 1; 48 : 0; 49 : 1; 50 : 2; 51 : 5; 52 : 10; 53 : 15; 54 : 21; 55 : 29; 56 : 37; 57 : 46; 58 : 56; 59 : 67; 60 : 78; 61 : 90; 62 : 102; 63 : 115; END; 3) 定制 LPM_ROM 模块。 在 QUARTUS II 中选择 ToolsMega Wizard Plug-In ManagerCreate a new custom megafunction vatiation 定制一个新的模块,在左栏选择 Memory Compiler 项下的 ROM:1-PORT,再在右栏选择器件系列为 ACEX1K,器件描述语言为 VHDL,输入 ROM 文件存 放的路径和文件名,然后单击 Next;选择 ROM 数据位为 8 位,地址数为 64,再次单击 Next(这里要注意的是去掉输出数据时钟锁存信号前的勾) ;在 File name 栏选择指定路径所保存的 SIN_ROM.MIF 文件,继续单击 Next,再单击 Finish 后完成了 SIN_ROM 的定制,之后会自动生成一个用 VHDL 语言描述的 SIN_ROM 模块,以便在主 程序中调用。 (6)方波程序 LIBRARY IEEE; USE IEEE. STD_LOGIC_1164.ALL; ENTITY square ISPORT (clk,reset: IN STD_LOGIC;q:OUT INTEGER RANGE 0 TO 255); END square; ARCHITECTURE behave OF square IS161第 3 章 可编程逻辑器件应用系统设计应用系统设计SIGNAL a: BIT; BEGINPROCESS (clk,reset)VARIABLE cnt: INTEGER RANGE 0 TO 63;BEGINIF reset=0THENA tmp:=tmp+4;when 64 to 127 = tmp:=255; when 128 to 190 = tmp:= tmp-4; when 192 to 255 = tmp:=0; when others = tmp:=0; end case;END IF;q tmp:=0;when 32 to 63 = tmp:=85; when 64 to 95 = tmp:=170; when 96 to 127 = tmp:=255; when 128 to 159 = tmp:=255;when 160 to 191 = tmp:=170;when 192 to 223 = tmp:=85;when 224 to 255 = tmp:=0;when others = tmp:=0; end case; END IF;qqqqqqqqqNULL; END CASE;END PROCESS;164现代电子系统设计教程END behave;其次在 Quartus II 中用图形输入法绘制函数信号发生器的顶层电路如图 3-12 所示。165第 3 章 可编程逻辑器件应用系统设计应用系统设计VCCSEL2.0INPUTVCCCLKINPUTVCCRESETINPUTDOUT7.0OUTPUTclkresetq7.0DCRS1clkresetq7.0DELTA2clkresetq7.0ICRS3clkresetq7.0LADDER_UP4clkresetq7.0SIN5clkresetq7.0TRAP7clkresetq7.0LADDER_DOWN_UP8sel2.0d07.0d17.0d27.0d37.0d47.0d57.0d67.0d77.0q7.0MUX81a9NOT10clkresetq7.0SQUARE6图 3-12 函数信号发生器顶层电路166现代电子系统设计教程该函数信号发生器在 Quartus II 中的仿真波形如图 3-133-20 所示。图 3-13 锯齿波(斜降)仿真波形图 3-14 三角波仿真波形图 3-15 锯齿波(斜升)仿真波形167第 3 章 可编程逻辑器件应用系统设计应用系统设计图 3-16 阶梯波(上升)仿真波形图 3-17 正弦波仿真波形图 3-18 方波仿真波形168现代电子系统设计教程图 3-19 梯形波仿真波形图 3-20 双向阶梯波仿真波形在 Quartus II 中设定管脚,参见表 3-3。表 3-3 管脚设定信号名称(参考)EP1K30TC144-引脚信号含义GW48-CK 按键CLK126时钟RESET19复位键 8SEL08状态选择 0键 1SEL19状态选择 1键 2SEL210状态选择 2键 3DO041数据输出位 0DO142数据输出位 1DO265数据输出位 2DO367数据输出位 3DO468数据输出位 4DO569数据输出位 5DO670数据输出位 6DO772数据输出位 7169第 3 章 可编程逻辑器件应用系统设计应用系统设计编译完成后下载到 GW48-CK 实验开发系统中,通过示波器观测输出信号的波形如 图 3-213-28 所示(滤波后信号) ,此时 cl
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号