需要确认注册邮箱后才能开通博客,立即确认我的邮箱
文章 搜索 高级搜索 ?3? ?3?
  • 滤波器new!
  • LED驱动 new!
  • 新能源 new!
  • PLL
  • PCIE协议
  • 可穿戴
  • LSI
  • FCI
文章 论坛 博客 小组 研讨会
EDN电子技术论坛>博客 >^洋仔^博客 >波形系列之正弦波发生器
博文列表查看方式: ???

波形系列之正弦波发生器
发布时间:2015-10-23 01:27:17
技术类别:CPLD/FPGA
需要确认注册邮箱后才能下载,立即确认我的邮箱

? ? ? ? 首先在这里要感谢至芯科技(上海)的老师,在笔者校招期间,他们给了我很大的鼓励和帮助。从上海回长沙的开始一段时间并不是那么的顺利,一度怀疑自己学习的方向是不是错了,也开始怀疑自己能力,降低要求,找个单位签了算了。我给尤老师打电话,把自己的疑惑跟他谈了谈,马上纠正我的错误想法并且坚定我的信心。现在,比起之前的情况好了很多,手里也有了offer。真的很感谢至芯。也告诉所有喜欢FPGA的人,喜欢,就坚持,不要因为一点点阻碍就放弃自己的梦想。

? ? ? ? 大家看到我这篇文章的题目之前加了“系列”两个字,那就是说关于“波 ”,我们不会只有这一篇,而是包括正弦波、混合波以及各种滤波器实现。这里面涉及到的一些理论,我尽量用简单、通俗易懂的语言来讲给大家。
一.目标波形
? ? ? ? 正弦波想必大家都不陌生,在高中的时候就有接触过,什么正余弦定理,积化和差、和差化积、半角/全角公式等等。当然大家完全不需要回去重新复习这些,只看博客的内容就够了。大家先想一想正弦波的函数图象,它的波形是什么样子的,什么?这个也想不到,没关系,就是下面这个样子^_^。
1.gif

? ? ? ? 博主不要闹,这哪里是什么正弦波,不要欺负我读书少!!!

? ? ? ? 别急,且听我慢慢说来,咳咳。。。上图给出的就是我们今天要实现的波形,先在视觉上面给大家一个直观的感受。该波形是由标准的正弦波通过变频、移相得到的。所谓万变不离其宗,根源还是正弦波。
二.相关概念
? ? ? ? 大家对下面的公式一定不陌生
? ? ? ? y=f(x)=Asin(wx+k)=Asin(2*pi*f*x+k);
? ? ? ? A :振幅 ? f:频率 ? ?k:相位
? ? ? ? 知道了这三个参数就能确定唯一一组波形。下面看看生成正弦波的步骤,并在步骤里面穿插讲解。
1.离散化?将连续的正弦波信号进行离散化;应用matlab软件进行实现;
2.gif
a)频率控制字M

? 以一个周期为例,在正弦波上面采集等间隔的离散的点,然后将这些点用平滑的曲线连接,就可以将波形表示出来。伟大的奈奎斯特告诉我们,要将波形恢复出来,采样频率要>=2*该波形频率,即采样点数要大于等于2。我们可以将一个周期分成2、4、8、16........2^N的份数,可以连续选取采样点,也可以隔1、2、。。。M个点采样。这里的M就是频率控制字。它的作用是控制目标波形的频率。这里先这么记住,往后面看。

b)目标波形的频率fs
? ? ? ? 既然我要生成一个正弦波,我当然要知道我生成的正弦波的频率,目标波形的频率fs=M*fclk/2^N;
fs怎么来的?
? ? ? ? 将一个周期分成2^N份,每M个点采样,那么一个周期要采多少个点?2^N/M;
? ? ? ? 每个时钟采一个点,采集2^N/M个点需要2^N/M个Tclk,转换成频率,乘变成除,就得到目标公式了。
c)相位控制字
? ? ? ? 相位的控制也比较简单,以相位为0作为标准:
? ? ? ? ?90度——2^N/4;
? ? ? ? ?180度——2^N/2;
? ? ? ? ?270度——2^N*3/4;
? ? ? ? ?相信大家也看出规律了,教大家一个快速的方法,将份数类比成角度360,对份数做运算相应的就是对角度做运算,得到期望的相位。
? ? ? ? ?注:如果你对于这些参数如何用代码控制还不是很清楚控制,那么具体看代码就一目了然了。
2.将离散化后的正弦波一个整周期存储到Ram中?
? ? ? ?(1).将离散后的数据进行定点化,Ram的规格是256*8,数据规格:1bit符号位+7bit小数位
? ? ? ?d)幅值
? ? ? ?以8bit位宽的RAM为例。8bit数据能表示的有符号数的范围是-128——127,幅值即为127。
将浮点数定点化:这里8bit全部表示整数位宽,所以讲正弦值*127然后取整,再去掉符号,将数据生成mif文件(matlab实现)
? ? ? ?(2).创建一个Ram 用于存储离散数据
? ? ? ?创建一个单口RAM,深度256,位宽为8,将mif文件导入即可。
三.仿真步骤
? ? ? ?该工程相应的仿真步骤如下:
1.打开Modelsim,改变当前路径
? ? ? ?File->Change Directory
? ? ? ?将路径切换到sim文件夹下面
3.gif
?
2.在命令行中敲入do run.do,自动执行仿真
4.gif
? 3.输出格式设置
? ? ? ?选中o_wave信号,右键选中Format->Analog(custom)?,打开设置选项
5.gif
?
? ? ? ?Height改成120,Max改成127,Min改成-128,点击ok。
4.效果图
6.gif

?四.总结

? ? ? ? 确定一个唯一的正弦波需要知道三个参数,幅值、频率、相位。结合了采样定理,说明了采样过程与这三个参数的对应关系,明确这些就可以用代码实现。由于篇幅原因,需要代码的同学,留言写下自己的邮箱,我会把代码打包好发给各位,包括(功能文件,测试文件,仿真文件、工程等)。
分享到:? 新浪微博 ?? 微信 ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
qq空间 ?? 腾讯微博 ?? 人人网 ?? 百度搜藏 ??
??????有[ 37 ]名读者喜欢此文
阅读(2539)?? 评论(28)?? 收藏??I?? 打印??I?? 推荐到小组??I?? 转发到我的博客 (0)
对不起,您还没有登录,请先登录注册
上一篇:波形系列之混合波

下一篇:基于FPGA的图像采集之三 SDRAM控制器 (一)

牛人有话说 - 波形系列之正弦波发生器
美国的游客 (您将以游客身份发表,请登录 | ?注册)
?
你还可以输入1000
验证码:
分享: 新浪微博?? qq空间?? qq微博?? 人人网?? 百度搜藏??
?
有 [ 10 ] 名读者发表评论 - 波形系列之正弦波发生器

上海市的游客
邮箱:2442016906@qq.com
(0) ???? (0) ???? 回复(0)
对不起,您还没有登录,请先登录注册
???? 2016-06-21 12:07
求工程文件,学习shijingbiao163@163.com
(0) ???? (0) ???? 回复(0)
对不起,您还没有登录,请先登录注册
???? 2016-06-21 11:20

上海市的游客
好厉害274517350@qq.com。谢谢
(0) ???? (0) ???? 回复(0)
对不起,您还没有登录,请先登录注册
???? 2016-06-20 22:48
大神给力,sieg70@yahoo.com.tw 谢谢
(0) ???? (0) ???? 回复(0)
对不起,您还没有登录,请先登录注册
???? 2016-06-20 10:07
我是小强我怕谁 :
求工程?想学习 我邮箱:yangjunli.11@163.com 谢谢
2016-05-28 17:21
发给你了
(0) ???? (0) ???? 回复(0)
对不起,您还没有登录,请先登录注册
???? 2016-06-18 11:39
求工程?想学习 我邮箱:yangjunli.11@163.com 谢谢
(0) ???? (0) ???? 回复(1)
对不起,您还没有登录,请先登录注册
???? 2016-05-28 17:21
邮箱huifeng200@126.com 请教了!
(0) ???? (0) ???? 回复(0)
对不起,您还没有登录,请先登录注册
???? 2015-12-16 16:07
1282542195@qq.com 谢谢大神!!!
(0) ???? (0) ???? 回复(0)
对不起,您还没有登录,请先登录注册
???? 2015-11-29 20:49
zcz2004 :
1197834690 @qq.com
2015-11-05 16:04
已发!
(0) ???? (0) ???? 回复(0)
对不起,您还没有登录,请先登录注册
???? 2015-11-06 13:37

山西省太原市的游客
1197834690 @qq.com
(0) ???? (0) ???? 回复(1)
对不起,您还没有登录,请先登录注册
???? 2015-11-05 16:04
转发到我的博客
评论?@洋仔的博客?的“波形系列之正弦波发生器”
首先在这里要感谢至芯科技(上海)的老师,在笔者校招期间,他们给了我很大的鼓励和帮助。从上海回长沙的开始一段时间并不是那么的顺利,一度怀疑自己学习的方向是不是错了,也开始怀疑自己能力,降低要求,找个单位签了算了。我给尤老师打电话,把自己的疑惑跟他谈了谈,马上纠正我的错误想法并且坚定我的信心。现在,比起...
你还可以输入30000
同时评论给?^洋仔^
????
快速回复
?
你还可以输入1000
????
引用回复
引用评论?
?
你还可以输入1000
????
博主资料

FPGA爱好者

文章存档
最新评论
阅读排行
^洋仔^的好友
^洋仔^的小组???? 加入小组
EDN助学—FPGA/CPLD学习小组
成员18962名
创建者:特权同学 《FPGA设计实战演练(高级技巧篇)》书友讨论小组 成员236名
创建者:coyoo FPGA入门 成员270名
创建者:ETRH Studio 成员337名
创建者:胖螃蟹
展开
最新网络博文
华为官方回应有关自研手机操作系统的传闻
这颗芯片有故事,你有酒吗?
PCB设计PADS各层的用途和作用
联想收购的得与失 摩托罗拉空壳化使...
传华为智能机销量目标下调2000万部 Ma...
? 更多博文>>
返回博客首页
有问题请反馈