|
本帖最后由 zkf0100007 于 2018-8-13 19:51 编辑
最开始是从树莓派的PiFM了解到,大牛用树莓派通过GPIO实现了FM发射,惊为天人。
当时想,树莓派可以做到的,FPGA应该也可以做到,上网一搜,还真有不少例子,选了一个老毛子的,比较简单,在zedboard上实现了一把。
实现思路如下:
假设中心频率为100MHz,最大调制频偏为50KHz,如果按8bit量化,则将50 kHz的整个间隔分成256段,我们计算了所有256个频率和相应的系数M.对于这个计算,我在C上写了一个程序:
- #include "stdafx.h"
- #define BASE_FREQ 500000000
- #define CARRIER 100000000
- #define BAND 50000
- int _tmain(int argc, _TCHAR* argv[])
- {
- double freq_wish;
- double divider;
- double m;
- printf("WIDTH = 16;\n");
- printf("DEPTH = %d;\n",256);
- printf("ADDRESS_RADIX = HEX;\n");
- printf("DATA_RADIX = HEX;\n");
- printf("CONTENT BEGIN\n");
- for(int i=0; i<256; i++)
- {
- freq_wish = CARRIER + BAND*i/256;
- divider = BASE_FREQ / freq_wish;
- m=(divider-4)/(5-divider);
- //printf("freq %f div %f %f %d\n",freq_wish,divider,m,(int)(m+0.5));
- printf("%04X: %04X;\n",i,(int)(m+0.5));
- }
- printf("END\n");
- return 0;
- }
复制代码
但是如何实现调频呢,解决方案结果非常简单。 我们需要采用一些相当高的频率,例如500MHz,然后除以5得到100MHz,或除以分数分频器,比如4.9998,接近100MHz,但仍然略有不同的频率:100004000Hz 。 也就是说,您需要对频率进行小数除法。 好吧,除了5,计数器很容易。 但是如何划分为分数除数? 事实上,通过数字方法我们只能模仿分数。 让我们这样说吧:我们将500MHz的原始高频几乎总是除以5,但有时很少除以4.然后插入时的平均脉冲通量“除以4”将增加。 插入“除以4”越多,平均输出频率越高。 以下是此划分方法的说明:
完整的ISE工程如下,注意我用的是山寨ZEDBOARD,板载PL时钟为100M,正版的ZEDBORAD是50M
用matlab生成了两个单音信号,用做音频测试,代码如下
- fs = 44100/2; %采样频率
- T = 1/fs; %采样周期
- time1 = 0.7; %第一个声音片段的总时长
- time2 = 0.1;
- time3 = 0.686;
- freq1 = 261; %第一个声音片段的频率(音调)
- freq2 = 0;
- freq3 = 1000;
- vol1 = 127; %第一个声音片段的音量
- vol2 = 0;
- vol3 = 100;
- tone1 = 128+sin(2*pi*freq1*(0:T:time1))*(vol1); %生成第一个声音片段,注意需要用db2mag()函数把dB转换成magnitude。
- tone2 = sin(2*pi*freq2*(0:T:time2))*(db2mag(vol2));
- tone3 = 128+sin(2*pi*freq3*(0:T:time3))*(vol3);
- Tone = [round(tone1), round(tone2), round(tone3)]; %组合所有声音片段
- sound(Tone,fs) %可以播放声音的函数 sound()
- fid_s = fopen('music_rom.coe', 'wt');
- fprintf(fid_s, '%s\n', 'MEMORY_INITIALIZATION_RADIX = 16;');
- fprintf(fid_s, '%s\n', 'MEMORY_INITIALIZATION_VECTOR =');
- for (i=1:32768)
- fprintf(fid_s, '%d', Tone(i));
- fprintf(fid_s, '%s', ',');
- end
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|