文档介绍:第7章电子系统设计实践(二)<EDA技术与应用> 课程讲义
下一章
合肥工业大学彭良清
上一章
本章内容
正弦信号发生器
8位硬件乘法器设计
乐曲硬件演奏电路设计
正弦信号发生器
目的:学会使用LPM模块,ROM模块。
原理:如何用FPGA硬件实现?
Y=sin(x) x: 0~2π
有2个方法:
台劳级数展开,sin运算变成乘加运算,硬件实现乘加运算。
查表法。硬件查表
查表法的正弦信号发生器
必须先解决的2个问题:
在FPGA中如何存储正弦函数表?
使用LPM_ROM宏模块
如何得到 y=sinx 函数的关系表
用高级语言程序计算
用excel表计算(最为简单)
正弦信号发生器:设计步骤
用excel计算y=sinx的数值。
编辑*.mif文件,保存步骤一计算的结果
定制用于存储mif文件的LPM_ROM模块
编写对LPM_ROM模块进行查表的代码
编译、仿真测试
完毕
用excel计算y=sinx的数值
X的取值范围,变化步长(分辨率)
X(0~63)
输入
A=x*2*
折算的角度(弧度)
B=SIN(A)
正弦值
C=(1+B1)*
折算0~255量程数
00
0
0
127
01
234
02
243
03
145
·········
FE
-
33
FF
148
计算过程参见:
正弦数据的EXCEL表
mif文件格式
DEPTH = 64; % Memory depth and width are required %
WIDTH = 8; % Enter a decimal number %
ADDRESS_RADIX = HEX;% Address and value radixes are optional %
DATA_RADIX = HEX; % Enter BIN, DEC, HEX, or OCT; unless %
% otherwise specified, radixes = HEX %
-- Specify values for addresses, which can be single address or range
CONTENT
BEGIN
[0..F] : 3FFF; % Range--Every address from 0 to F = 3FFF %
6 : F; % Single address--Address 6 = F %
8 : F E 5; % Range starting from specific address-- %
END ; % Addr[8] = F, Addr[9] = E, Addr[A] = 5 %
本例中的mif文件的内容
DEPTH = 64;
WIDTH = 8;
ADDRESS_RADIX = DEC; -- HEX
DATA_RADIX = DEC; --HEX
CONTENT
BEGIN
0: 127;
1: 234;
2: 243;
3: 145;
4: 31;
5: 5;
6: 91;
7: 211;
8: 253;
………
61: 4;
62: 33;
63: 148;
END ;
详细参见:
P196_EX7_12_SINDATA
Mif文件的2种编辑方法
对话窗下输入
FILE->NEW->OTHER FILES-MEMORY INITIALIZATION FILE
任何文本编辑器直接输入,要注意格式
定制用于存储mif文件的 LPM_ROM模块
进入:Tools->MegaWizard Plug-In Manager