EDA正弦波信号发生器的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
利用LPM 设计正弦信号发生器
一、设计目的:
进一步熟悉maxplu sII 及其LPM 设计的运用。
二、设计要求:
1、利用原理图输入方式。
2、信号数据点值自行想法实现。
3、得出正确时序仿真文件。
三、设计原理:
图1 正弦信号发生器结构框图
图1所示的正弦波信号发生器的结构由三部分组成
计数器或地址发生器(这里选择8位),正弦信号数据ROM (8位地址线,8位数据线),含有256个8位数据(一个周期)。
四、VHDL 顶层设计。
设计步骤:
1、建立.mif 格式文件
建立C 语言文件sin.cpp ,运行产生sin.exe 文件。
sin.cpp 程序代码:
#include
#include
#include
using namespace std;
int main()
{
int i;
float s;
VHDL 顶层设计sin.vhd
8位计数器 (地址发生器) 正弦波数据 存储ROM 产生波形数据
cout<<"WIDTH=8;\nDEPTH=256;\n\nADDRESS_RADIX=HEX;\nDA TA_R ADIX=HEX;\n\nCONTENT\nBEGIN\n";
for(i=0;i<256;i++)
{
s=sin(atan(1)*8*i/256);
cout<<" "<
}
cout<<"END"< return 0; } 把上述程序编译后,在DOS命令行下执行命令:sin.exe > sin.mif; 将生成的sin.mif 文件。 sin.mif文件: WIDTH=8; DEPTH=256; ADDRESS_RADIX=HEX; DA TA_RADIX=HEX; CONTENT BEGIN 0 : 7f; 1 : 82; 2 : 85; 3 : 88; 4 : 8b; 5 : 8f; 6 : 92; 7 : 95; 8 : 98; 9 : 9b; a : 9e; b : a1; c : a4; d : a7; e : aa; f : ad; 10 : b0; 11 : b3; 12 : b6; 13 : b8; 14 : bb; 15 : be; 16 : c1; 17 : c3; 18 : c6; 19 : c8; 1a : cb; 1b : cd; 1c : d0; 1d : d2; 1e : d5; 1f : d7; 20 : d9; 21 : db; 22 : dd; 23 : e0; 24 : e2; 25 : e4; 26 : e5; 27 : e7; 28 : e9; 29 : eb; 2a : ec; 2b : ee; 2c : ef; 2d : f1; 2e : f2; 2f : f4; 30 : f5; 31 : f6; 32 : f7; 33 : f8; 34 : f9; 35 : fa; 36 : fb; 37 : fb; 38 : fc; 39 : fd; 3a : fd; 3b : fe; 3c : fe; 3d : fe; 3e : fe; 3f : fe; 40 : ff; 41 : fe; 42 : fe; 43 : fe; 44 : fe; 45 : fe; 46 : fd; 47 : fd; 48 : fc; 49 : fb; 4a : fb; 4b : fa; 4c : f9; 4d : f8; 4e : f7; 4f : f6; 50 : f5; 51 : f4; 52 : f2; 53 : f1; 54 : ef; 55 : ee; 56 : ec; 57 : eb; 58 : e9; 59 : e7; 5a : e5; 5b : e4; 5c : e2; 5d : e0; 5e : dd; 5f : db; 60 : d9; 61 : d7; 62 : d5; 63 : d2; 64 : d0; 65 : cd; 66 : cb; 67 : c8; 68 : c6; 69 : c3; 6a : c1; 6b : be; 6c : bb; 6d : b8; 6e : b6; 6f : b3; 70 : b0; 71 : ad; 72 : aa; 73 : a7; 74 : a4; 75 : a1; 76 : 9e; 77 : 9b; 78 : 98; 79 : 95; 7a : 92; 7b : 8f;