第8章-基于SOPC实现的数字信号处理实验报告

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

运算实现,但经过运算的简化,可以只用3次实数乘法和
3次实数加/减法运算实现复数乘法器。
32
旋转因子算法
设复数旋转因子乘法R+jI=(X+jY)(C+jS),因为C和S可以 预先计算的,并可以储存在一个表中。所以可以储存下 面的三个系数: • C、C+S、C-S 有了这3个预先计算的因子,可以首先计算: • E=X-Y和Z=C*E=C* (X-Y) 然后用: • R=(C-S)*Y+Z • I=(C+S)*X-Z 计算最后的乘积。
6
(2)原理图输入
三、实验步骤
■选择File New,在弹出的对话框中选中Block Diagram/Schematic File。
7
(3)编译
三、实验步骤
■选择Processing Start Compilation或者点击工具栏里 的 对图形文件进行编译。
8
(4) 仿真
建立波形文件
11
(7) 编程下载及硬件验证
三、实验步骤
■执行Tools Programmer命令,设置编程方式为USB-Blaster[USB-0]编 程方式,选择JTAG编程模式。执行Processing Start,实现设计电路 到目标芯片的编程下载。然后在DE2开发板上通过扳动SW15~SW0电 平开关,组成加数A和加数B的不同组合,在红色发光二极管LEDR7~ LEDR0和LEDR8上观察A数和B数相加的和数与向高位的进位COUT的 结果。
三、实验步骤
输入信号节点
设置波形参数
编辑输入信号
运行仿真
9
(5) RTL级电路
三、实验步骤
■选择Tools RTL Viewer项观看工程项目的RTL级电路。
10
(6) 引脚锁定
三、实验步骤
■选择Assignments Assignment Editor项,在编辑器窗 的Category栏中选择Pin,锁定引脚。
2
8.1 开发环境QuartusⅡ 一、实验目的 二、实验原理 三、实验步骤 四、实验思考题 五、实验报告要求
3
一、实验目的
★熟悉SOPC设计流程 ★熟悉利用QuartusⅡ的原理团输入方法设计
简单组合电路
★学习加法器的设计
4
二、实验原理
本实验设计一个八位加法器,主要由两个四位
加法器74283构成,加数A的低4位和高4位分别与两
选择File New Other Files Memory Initialization File, 将波形数据填 入此表中,即 .mif数据。
利用C程序编 辑产生.mif文 件或利用汇编 程序编辑,然后 用单片机ASM 编辑器产生.hex 格式文件
18
利用Dspbuilder /Matlab的工具 来产生,在其 数据文件目录 中就可以找到 .mif和.hex格式 文件
15
二、实验原理
顶层文件sinewave.vhd在FPGA中实现ROM地址信号发
生器的由一个6位计数器,正弦数据存放在ROM中。数据
ROM由LPM_ROM模块实现,其底层是FPGA中的M4K。 地址发生器的时钟CLK的输入频率与每周期的波形数据点数 以及D/A输出频率的关系是 f f 0 64 。
(3) 定制ROM元件
三、实验步骤
■ Tools--Mega Wizard Plug-In Manager项,在产生的对话
框的左栏中选择storage/LPM_ROM,再选择Cyclone器 件和VHDL语言方式,最后输入ROM文件的存放路径。
选择地址线数据位宽及地址锁存信号
19
(3) 定制ROM元件
30
二、实验原理
本实验采用按时间抽取(decimation in time)的基2快速
傅立叶算法(基2DIT-FFT)。基2 FFT蝶形处理器的实现
需要一个复数加法器、一个复数减法器和一个旋转因子 乘法器。
31
三、实验方案
★旋转因子乘法器的实现
旋转因子的乘法器通常由4次实数乘法和6次实数加/减法
三、实验步骤
指定路径上的数据初始化文件.hex,完成ROM定制
20
(4) 编译
三、实验步骤
21
(5) 仿真及RTL级电路
三、实验步骤
仿真结果
RTL级电路
22
(6) 引脚锁定和编程下载
三、实验步骤
23
(7) 使用嵌入式逻辑分析仪进行实时测试 三、实验步骤
★ ★步骤★ ★
1、 创建SignalTap II(ToolsSignalTap II Logic analyzer )
3.写出结论和心得体会
4.简要回答思考题
28
8.3 快速傅里叶变换的实现
一、实验目的 二、实验原理 三、实验方案 四、实验思考题 五、实验报告要求
29
一、实验目的
★了解基2 FFT实现原理; ★掌握用文本输入法进行旋转因子和蝶形处理器 的设计; ★ 学习使用Quartus II实现FFT的基本方法与步骤。
24
(8) 测试结果
三、实验步骤
SignalTap II信号观察窗口
25
(8) 测试结果
三、实验步骤
编辑波形数据,查看模拟输出结果
26
四、实验思考题
分析SignalTap II采样得到如图所示的波形图的原因。
27
五、 实验报告要求
1.写出Quartus II进行文本输入方法的完整设计流程
2.简述定制LMP功能模块的基本过程
12
8.1 开发环境QuartusⅡ
四、实验思考题 若想用LED显示加法器的输出结果,原理图应该有那些 地方需要修改?应该怎样设置引脚? 五、实验报告要求 1.写出Quartus II进行图形编辑输入方法的完整设计流程 2.参考Quartus II的Help,详细说明Assignments菜单中 的Settings对话框的功能;概述Assignments菜单中的 Assignment Editor的功能,举例说明; 3.简述设计步骤和调试过程,包括图形编辑文件,引脚 功能的定义文件,仿真结果; 4.简要回答思考题。
13
8.2 正弦信号发生器设计
Leabharlann Baidu
一、实验目的 二、实验原理 三、实验步骤 四、实验思考题 五、实验报告要求
14
一、实验目的
★熟悉SOPC设计流程
★熟悉利用QuartusⅡ的文本输入方法设计简单正
弦信号发生器电路原理
★掌握嵌入式存储器的应用以及使用嵌入式逻辑
分析仪进行测试的方法
★学习宏功能模块实例化输入和简单程序的调试
35
USE ieee.std_logic_1164.ALL; USE ieee.std_logic_arith.ALL; ENTITY bf IS GENERIC (W2: INTEGER: =17; --multiplier bit width W1: INTEGER: =9; --Bit width c+s sum W: INTEGER: =8); --Input bit width PORT ( clk :IN STD_LOGIC; Are_in, Aim_in, Bre_in, Bim_in, c_in : IN STD_LOGIC_VECTOR (W - 1 downto 0); cas_in, css_in : IN STD_LOGIC_VECTOR (W1 - 1 downto 0); Dre_out, Dim_out, Ere_out, Eim_out: OUT STD_LOGIC_VECTOR (W - 1 downto 0)); END bf; Dim_out<=Dim; Ere_out<=Ere; Eim_out<=Eim; END PROCESS; END a; ARCHITECTURE a OF bf IS SIGNAL r, i : STD_LOGIC_VECTOR (W -1 DOWNTO 0); SIGNAL Dre, Dim, Ere, Eim: STD_LOGIC_VECTOR (W-1 DOWNTO 0); BEGIN multiplier_1: multiplier --r+ji
36
GENERIC MAP (W2=>W2, W1=>W1, W=>W) PORT MAP (clk=>clk, x_in=>Bre_in, y_in=>Bim_in, c_in=>c_in, cas_in=>cas_in, css_in=>css_in, r_out=>r, i_out=>i); sub_1:lpm_add_sub GENERIC MAP (LPM_WIDTH=>W, LPM_DIRECTION=>"SUB", LPM_REPRESENTATION=>"SIGNED") PORT MAP (dataa=>Are_in, datab=>r, result=>Dre); sub_2:lpm_add_sub GENERIC MAP (LPM_WIDTH=>W, LPM_DIRECTION=>"SUB", LPM_REPRESENTATION=>"SIGNED") PORT MAP (dataa=>Aim_in, datab=>i, result=>Dim); add_1:lpm_add_sub GENERIC MAP (LPM_WIDTH=>W, LPM_DIRECTION=>"ADD", LPM_REPRESENTATION=>"SIGNED") PORT MAP (dataa=>Are_in, datab=>r, result=>Ere); add_2:lpm_add_sub GENERIC MAP (LPM_WIDTH=>W, LPM_DIRECTION=>"ADD", LPM_REPRESENTATION=>"SIGNED") PORT MAP (dataa=>Aim_in, datab=>i, result=>Eim); PROCESS BEGIN WAIT UNTIL clk'event and clk='1'; Dre_out<=Dre;
33
★蝶形处理单元的实现
蝶形运算单元是FFT处理器的基本单元,用来计算两点 的FFT。由于蝶形运算单元是由一个复数加法器、一个
复数减法器和一个旋转因子复数乘法器组成,基-2FFT蝶
形运算单元的VHDL代码如下。从代码中可以看出,蝶 形处理器是由一个加法器、一个减法器和一个实例化为
组件的旋转因子乘法器实现的。
个加法器的A1-A4输入端连接。同样加数B的低4位和
高4位分别与两个加法器的B1-B4输入端连接,即加 法器间的进位可以串行实现,将低位加法器的进位 输出cout与高位加法器的最低进位输入信号cin相接。 由此加数A和B有各种不同的组合,从而实现加法器
的功能。
5
(1)创建新的工程
三、实验步骤
■选择File New Project Wizard,新建一个工程。
16
(1) 创建新的工程
三、实验步骤
■创建工程,选择目标芯片,采用文本输入方法,编辑输入 设计顶层文件sinewave.vhd。
17
(2) 定制ROM初始化数据文件
三、实验步骤
■ ROM初始化数据文件有两种:Memory Initialization File(.mif)格式和Hexadecimal(Intel-Format)File (.hex)格式。 实现方法
34
旋转因子VHDL代码
---基2-FFT蝶形运算单元的VHDL代码实现 LIBRARY Lpm; USE Lpm.Lpm_components.ALL; LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_arith.ALL; PACKAGE mul_Package IS ---User defined components COMPONENT multiplier GENERIC (W2: INTEGER: =17; ---multiplier bit width W1: INTEGER: =9; ---Bit width c+s sum W: INTEGER: =8); ---Input bit width PORT ( clk: IN STD_LOGIC; x_in, y_in, c_in: IN STD_LOGIC_VECTOR (W - 1 downto 0); ---inputs cas_in, css_in: IN STD_LOGIC_VECTOR (W1 - 1 downto 0);--inputs r_out, i_out: OUT STD_LOGIC_VECTOR (W - 1 downto 0));--results END COMPONENT; END mul_package; LIBRARY work; USE work.mul_package.ALL; LIBRARY lpm; USE Lpm.Lpm_components.ALL; LIBRARY ieee;
2、调入待测信号(双击Node Finder窗口,添加观测信号) 3、参数设置(时钟信号、采样深度 、触发条件 、触发信号 和触发方式 ) 4、 SignalTap II文件存盘(File Save As ) 5、编译下载(再次启动全程编译 ) 6、启动SignalTap II(Instance Manager栏中点击单步或连续 运行按钮 )
第8章 基于SOPC实现的数字信号处理实验
Dr. Zhang Jianping
Shanghai University of Electric Power Shanghai , 200090
2009.5
1
内容提要
8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 开发环境QuartusⅡ 正弦信号发生器设计 快速傅里叶变换的实现 直接I型FIR数字滤波器设计 基于DA算法的FIR滤波器的设计 直接II型IIR数字滤波器设计 预先考虑算法并行IIR数字滤波器设计 SOPC在语音和图像中的应用
相关文档
最新文档