之前在ZEDBOARD上实现了FM发射,移植到荔枝糖FPGA开发板上,运行异常,抓波形看,波形紊乱,由于最高时钟为450M,估计是荔枝糖FPGA开发板跑不了这么高,那就降频吧,降到18M果然可以发射了
top代码如下:

module top(output [2 : 0] rgb_led_o,input clk24mhz,input reset,output fm_tx);wire ireset;
wire lock;
wire clk90MHz;
wire iclk20MHz;
wire [15:0] in_factor;
wire [7:0] addr;reg clk_audio;
reg [11:0] cnt;
reg [14:0] music_cnt; always @(posedge iclk20MHz)
begin
if (!reset)begincnt <= 0;clk_audio <= 0;end
elsebeginif (cnt == 453)//22.1KHz sample ratebeginclk_audio <= !clk_audio;cnt <= 0;endelsecnt <= cnt + 1;end
endalways @(posedge clk_audio)
begin
if (!reset)beginmusic_cnt <= 0;end
elsemusic_cnt <= music_cnt + 1;
endclk u1(.refclk(clk24mhz), .reset(ireset),.stdby(),.extlock(lock),.clk0_out(iclk20MHz),.clk1_out(clk90MHz));divider u2(.clk_in(clk90MHz),.nreset(reset),.in_factor(in_factor), .nclk(fm_tx)
);music u3(.doa(addr),.addra(music_cnt),.clka(clk_audio),.rsta(ireset)
);blk_mem u4(.doa(in_factor),.addra(addr),.clka(iclk20MHz),.rsta(ireset)
);assign ireset = !reset;
assign rgb_led_o[0] = !lock;
assign rgb_led_o[1] = 1;
assign rgb_led_o[2] = 1;
endmodule

divider代码如下:


module divider(input wire clk_in,input wire nreset,input wire [15:0]in_factor,output wire nclk
);reg r0, r1, r2, r3, r4;reg [15:0]factor=0;
reg [15:0]fcnt;
reg short;
reg short_f;always @(posedge clk_in or negedge nreset)
beginif(~nreset)beginr0 <= 0;r1 <= 0;r2 <= 0;r3 <= 0;r4 <= 1;endelsebeginr0 <= r1;r1 <= r2;r2 <= r3;if(short)r3 <= r0;elser3 <= r4;if(~short)r4 <= r0;end
endassign nclk = r0;always @(posedge clk_in or negedge nreset)if(~nreset)beginfcnt <= 0;short <= 0;short_f <= 0;endelsebeginif(r0)fcnt <= short ? 0 : fcnt +1;if(r2)short <= (fcnt == factor);if(r0)short_f <= short;if(r0 & short_f)factor <= in_factor;endendmodule

u4的fm_tx_rom初始化mif文件生成matlab代码如下:

clear all;
close all;
clc;BASE_FREQ = 90000000;
CARRIER = 18000000;
BAND = 50000;fid_s = fopen('fm_tx_rom.mif', 'wt');
fprintf(fid_s, '%s\n', 'DEPTH=256;');
fprintf(fid_s, '%s\n', 'WIDTH=16;');
fprintf(fid_s, '%s\n', 'ADDRESS_RADIX=UNS;');%UNS表示为十进制
fprintf(fid_s, '%s\n', 'DATA_RADIX=UNS;');
fprintf(fid_s, '%s\n', 'CONTENT BEGIN');for (i=1:256)freq_wish = CARRIER + BAND*(i-1)/256;divider = BASE_FREQ / freq_wish;m=(divider-4)/(5-divider); fprintf(fid_s, '%03d', i-1);fprintf(fid_s, '%s', ' : ');fprintf(fid_s, '%d', round(m));fprintf(fid_s, '%s\n', ';');
end
fclose(fid_s);
disp('===================转换完成=========================');

测试音频rom文件初始化mif文件生成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.mif', 'wt');
fprintf(fid_s, '%s\n', 'DEPTH=32768;');
fprintf(fid_s, '%s\n', 'WIDTH=8;');
fprintf(fid_s, '%s\n', 'ADDRESS_RADIX=UNS;');%UNS表示为十进制
fprintf(fid_s, '%s\n', 'DATA_RADIX=UNS;');
fprintf(fid_s, '%s\n', 'CONTENT BEGIN');for (i=1:32768)fprintf(fid_s, '%05d', i-1);fprintf(fid_s, '%s', ' : ');fprintf(fid_s, '%d', Tone(i));fprintf(fid_s, '%s\n', ';');
end

国产荔枝糖FPGA开发板实现FM发射相关推荐

  1. 荔枝糖FPGA开发板相关博客

    Hello World on the Lichee Tang RISC-V/FPGA board https://justanotherelectronicsblog.com/?p=470 Liche ...

  2. 全志A40i+Logos FPGA开发板(4核ARM Cortex-A7)硬件说明书(下)

    前 言 本文档主要介绍板卡硬件接口资源以及设计注意事项等内容,测试板卡为创龙科技旗下的全志A40i+Logos FPGA开发板. 核心板的ARM端和FPGA端的IO电平标准一般为3.3V,上拉电源一般 ...

  3. fpga驱动rgb液晶屏_正点原子开拓者FPGA开发板资料连载第五十四章基于的数字识别实验...

    1)实验平台:正点原子开拓者FPGA 开发板 2)摘自<开拓者FPGA开发指南>关注官方微信号公众号,获取更多资料:正点原子 3)全套实验源码+手册+视频下载地址:http://www.o ...

  4. html抽奖源码_开源FPGA开发板OpenICE 介绍及抽奖

    首先呢,先强调一遍,我做板子不是为了挣钱,因为国内目前的形式比较严峻,只是为了体验一下开源的工具和环境,也为了后人能对FPGA有个新的认识,所以不会触碰到任何人的蛋糕. 本来今天不准备发文了,还是熬夜 ...

  5. 开源FPGA开发板-OpenICE 介绍及抽奖

    首先呢,先强调一遍,我做板子不是为了挣钱,因为国内目前的形式比较严峻,只是为了体验一下开源的工具和环境,也为了后人能对FPGA有个新的认识,所以不会触碰到任何人的蛋糕. 本来今天不准备发文了,还是熬夜 ...

  6. 异步fifo_正点原子开拓者FPGA开发板资料连载第十五章 IP核之FIFO实验

    1)实验平台:正点原子开拓者FPGA 开发板 2)摘自<开拓者FPGA开发指南>关注官方微信号公众号,获取更多资料:正点原子 3)全套实验源码+手册+视频下载地址:http://www.o ...

  7. Digilent FPGA开发板的Boards file的添加——以Eclypse-Z7为例

    Digilent FPGA开发板的Boards file的添加--以Eclypse-Z7为例 背景 软硬件平台 添加Eclypse-Z7的board file 参考相关 背景 最近刚开始使用 Digi ...

  8. Xilinx FPGA开发板 Digilent Spartan-3E 学习资料整理

    很多人抱怨Xilinx FPGA的资料很难找,Digilent的板卡资料网上怎么就没有呢!针对这些问题写了如下的BLog,希望对大家有帮助. 最近几日在整理关于Xilinx FPGA和Digilent ...

  9. 手把手教你如何使用Multisim对Digilent FPGA开发板进行编程

    1.jpg (43.84 KB, 下载次数: 0) 下载附件 2017-6-1 20:03 上传 FPGA正在逐渐成为EECS专业的同学们在校期间学习掌握的一项必备技能.无论是在课程实验.竞赛作品.科 ...

最新文章

  1. 边缘计算芯片格局分析
  2. 【图像处理opencv】_Jupyter 更改文件默认保存目录
  3. 对 UI 设计师来说,iPhone X 意味着什么?
  4. java中开根号是什么函数_这真的是素数的公式!但没有什么卵用!
  5. darknet: ./src/parser.c:348: parse_region: Assertion `l.outputs == params.inputs' failed.yolov3训练问题
  6. 视频云峰会|“超视频化时代的全景创新” 是什么?
  7. 武大计算机几天出录取结果,录取大概要几天 多久录取结果出来
  8. div独占一行 html_web前端基础-HTML及CSS选择器
  9. Sublime Text 3 快捷键及使用技巧
  10. SAP License:煤化工企业现场调研感想
  11. 世界互联网大会发布15项领先科技成果
  12. python all 函数_Python all()函数
  13. 2022-2028全球与中国以太网控制器市场现状及未来发展趋势
  14. jhu研究生录取 计算机,背景一般获约翰霍普金斯大学JHU信息安全硕士录取
  15. 软件工程实践2019第一次作业
  16. 第一道题目:一个美国人在菜市场上做生意。第一次,8美元买了一只鸡,9美元卖掉了;第二次,10美元买了同样的一只鸡,11美元又卖掉了。
  17. 逻辑思维案例题(二)
  18. python怎么群发邮件_python群发邮件怎么做
  19. 国家市场监督管理总局公布《国家标准管理办法》
  20. 从15亿到5000亿 eBay收购PayPal成硅谷传奇

热门文章

  1. 2018年15大互联网趋势,你的技术方向走对了吗?
  2. 2021年安全员-C证模拟试题及安全员-C证模拟考试题库
  3. IEEE期刊 latex模版-word模板下载和导入
  4. 语音合成芯片在高速公路收费系统中的应用
  5. 权限控制(delphi actionlist)
  6. 实时天气及24小时天气预报
  7. CQRS读写职责分离模式(Command and Query Responsibility Segregation (CQRS) Pattern)
  8. 我想要绅博注册邀请码
  9. 谷歌SEO发展的八大趋势
  10. 秒数转化为时间---王子様