首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» FPGA实现基于ROM的正弦波发生器
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
FPGA实现基于ROM的正弦波发生器
发短消息
加为好友
苹果也疯狂
当前离线
UID
852722
帖子
10369
精华
0
积分
5185
阅读权限
90
在线时间
277 小时
注册时间
2011-8-30
最后登录
2016-7-18
论坛元老
UID
852722
1
#
打印
字体大小:
t
T
苹果也疯狂
发表于 2015-7-29 10:10
|
只看该作者
FPGA实现基于ROM的正弦波发生器
发生器
,
软件
,
影片
软件环境:QuartusII 11.0 操作系统:win7
芯片型号:CycloneII EP2C5Q208C8
1.总体框图:
1.波形数据
第一步,是获得含有正弦波的数据的ROM初始化文件.mif,方法见《
如何生成mif文件
》;
此处生成的波形数据为8bit宽度,128字节深度的数据。
2.利用Quartus的LPM功能,定制一个8bit数据宽度,128字节深度的ROM:
详细步骤说明可以参考《
FPGA实现RAM--LPM_RAM
》,此处只给出具体配置,为避免冗余,不再详细说明各项含义。
3.顶层模块的verilog描述
[url=]
[/url]
module
SinGen(
input
clk,
/*
clock input
*/
input
rst_n,
/*
async reset ,active low
*/
input
en,
/*
enable control,active high
*/
output
[
7
:
0
] q
/*
data output from ROM
*/
);
/*
**********ROM instance*********************
*/
wire
[
6
:
0
] addr;ROM1P ROM1P_inst ( .address ( addr ), .clock ( clk), .q ( q) );
/*
**************address generate**************
*/
reg
[
6
:
0
] cnt;
always
@(
posedge
clk
or
negedge
rst_n)
begin
if
(!
rst_n) cnt
<=
7
'
d0;
else
if
(en) cnt
<= cnt+
7
'
d1;
else
cnt
<=
cnt;
end
assign
addr =
cnt;
endmodule
[url=]
[/url]
4.波形仿真:
分析:当使能端有效(en==1)时,在每个时钟的上升沿,输出ROM中的正弦波数据;
5.波形实测
将数据输出端接入到DAC后,可以接入示波器来观察波形;也可以使用QuartusII自带的SignalTap对数据输出端对Q进行采样,来查看波形;这里使用SignalTap捕获的波形如下:
可以看到,数据的确是正弦波吧?使用同样的道理,只要有相应波形的数据,也就是存储器的初始化文件.mif,就可以发生三角波、方波、甚至任意波形!如果您感兴趣,可以添加按键扫描模块,来控制发生想要的波形,制作一台简易波形发生器。
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议