第二种:你可以直接对争先信号进行判断,给它一个初值,将其整形为方波,最后再团磨经过分频,简或历就OK了!!!(这种方法不需要整形硬件电路)
今年电子大赛的时候做过一个,不过是基于XILINX公司的FPGA的,我给你介绍一下思路吧。还有就是不知道你的信号发生器要求频率和精度是多少
一般有两种实现方式:一种是控制AD输出模拟量,另一种是通过SPWM和低通整流而来
本程序是第二种
工作机理有两部分组成:PWM的产生和表
产生部分由两个寄存器和一个计数器组成,计数器不听累加同时与两个寄存器作比较,两个寄存器一个控制置底一个控制拉高,一般把一个固定就行了告歼(有的地方说是一个控制周期一个控制高电平时间,其实是一样的)
表里放的是一个正弦数组(产生正弦波),之后有一个寄存器控制读取表的速度(间隔),把读取出的表值存入上面那个没固定的寄存器就行了
http://blog.sina.com.cn/s/blog_6e22b1da0100n52r.html
我的博客里有一篇关于SPWM模式的DDS的文章
你可以看一看
不懂得话可以给我留言
A/D转换的方法要比SPWM的方法简单,首先你要新建一个存储空间,里面存上A/D的电压控制量的一维数组,数组中存在的数值对应的电压从前到后呈正弦波形排列,每个周期从数组中每隔n个元素依次读取数组付给A/D转换器,这样A/D就可以输出启郑正弦波了,而里面的n步进是由一个寄存器控制的,n的大小决定了你的频率。
至于你说的液晶显示,按键等。我建议你用SOPC实现,Alter公司有Nois2的ip核。它相当于把FPGA当单片机用,你将液晶控制、按键控制、波形生成分别变成自定义IP核集成于系统,之后在袜旁冲顶层用C语言实现目的即可。
如果你不会HDL语言的话,必须先把它学了。如果你不了解SOPC的话,给你介绍一个很好的资料,估计你按这个一步一步来,1周就能学会。
http://wenku.baidu.com/view/dd7ade360b4c2e3f57276360.html
这是百度文库的链接,一共是五章,你可以自己搜索。
今年的电子大赛FPGA组的比赛有不少省市都和你这道题有关,虽然是XILINX公司的,但是大同小异。
首先有一个DAC芯片,然后山则FPGA控制这个DAC芯片。在FPGA内部设置一个RAM,这个RAM里初始化时存放一堆DAC的数据。简单来说存放:
1)方波,2个幅值的;
2)锯齿波,2个幅值的;
3)三角波,2个幅值的;
4)正弦波,2个幅值的。
然后ABD三个拨码开关选择地址——8个起始地址,其中每个起始地址后面都存放128个数据(具体大团雀小看设置),让fpga定时在其中循环扫描输出数据到DAC。
最后由D开关控制扫描定时器时间2个档位。
我以前设计的板卡用FPGA控制32路塌唯早DAC输出,工作方法和这个类似,当然产品化的东西比较麻烦了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)