【FPGA】使用Verilog编程通过ModelSim实现2FSK调制解调仿真①( MATLAB生成.mif文件)

4 篇文章 1 订阅

Verilog编写2FSK第①步MATLAB生成.mif文件

在Verilog生成DDS前,需要先用MATLAB生成.mif文件供quartus调用。

  • 需要在开头创建.mif文件并且文件设置地址:
DDSfil = fopen('D:\WXD\MATLAB\DDS.mif','wt');%D:\WXD\MATLAB\DDS.mif(.mif文件生成地址)wt(以只写的方式打开文件)
  • 添加正弦函数参数:
AM=2^9;%信号幅度这里我设置的是512
ADC=2^9;%直流分量,我只需要正值,所以将信号向上抬升了512,此时信号幅值为1024.
FS=2^10;%采样频率1024
t=[0:1/FS:1];%采样时刻从011/FS为分辨率
s=AM*sin(2*pi*t-pi/2) + ADC;%生成信号,可进行修改相移数值,来进行一周期内波形的选择
  • 添加.mf文件内标准格式:
fprintf(DDSfil, '%s\n','DEPTH=1024;');%数据深度
fprintf(DDSfil, '%s\n','WIDTH=10;');%数据位宽
fprintf(DDSfil, '%s\n','ADDRESS_RADIX=UNS;');%地址格式可为HEX DEC UNS
fprintf(DDSfil, '%s\n','DATA_RADIX=HEX;');%数据格式可为HEX DEC UNS
fprintf(DDSfil, '%s\t','CONTENT');%s数据地址
fprintf(DDSfil, '%s\n','BEGIN');%数据开始读取

以上文件格式不可修改,是生成.mif 文件的必要信息。

  • 将数据写入.mif文件
for i = 1:1:FS%1到FS
    fprintf(DDSfil, '\t%g',i-1);%数据地址,从0开始编码到10231024个数据如果需要从1开始计数设置为i;
    fprintf(DDSfil, '%s',':');%冒号左边是地址,右边是数据,所以这里需要输出个':'
    fprintf(DDSfil, '%x',round(s(i)));%以X为16进制放置采样后量化数值的
    fprintf(DDSfil, '%s\n',';');%分号结尾/n以下一行开始下一组数据存储
end
  • 最后将.mif文件格式结尾加上
fprintf(DDSfil, '%s\n','END');%该语句必不可少,为.mif结束语句,如果缺少,quartus编译无法通过

以上代码直接按顺序粘贴紧MATLAB中即可运行,需要注意的是文件生成地址。.mif文件可通过记事本打开查看。

【FPGA】使用Verilog编程通过ModelSim实现2FSK调制解调仿真③(信号调制仿真)

【FPGA】使用Verilog编程通过ModelSim实现2FSK调制解调仿真②(调用.mif生成2FSK载波波形——DDS)

  • 4
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值