平滑滤波器的设计与实现(FIR)
h(n):相当于平滑系数,
采样率:相当于采样时钟,就是驱动查找其幅值的时钟
载波频率:正弦波的周期是多少,
每个采样周期采样点: 采样率 / 载波频率
数据速率定义:已载波为载体的数据bit变化率,比如10个载波的周期是1个数据bit,那么bit率是载波频率的1/12.5
这次我们用C++编写了一个模拟ask调制。
本次设计中采样时钟使用 40MHz,数据频率 100KHz,载波频率 1.25MHz。既在 40MHz 的时钟下,每个载波周期内有 40MHz/1.25MHz = 32 个采样点;
该模块设计思路是先内部声明两个数组,分别存放sin和cos波形对应的值;
模块内部有一个计数器,在 40MHz 时钟作用下,从 0 到 32 进行循环计数;模块每输入一个数,进行一次判断,当输入数据为 0 时,输出为 0,当输入数据为 1时,输出 sin 与 cos 数组里与当前计数器对应的值每个数据周期里有 40MHz / 100KHz = 400 个采样点;
首先产生一个波形,我们依旧是是利用matlab 先模拟出波形,然后取点,将值保存下来,到时直接赋值给对应的数组。
由于根据我们前面的计算,我们每个载波周期需要32个采样点,所以我们在matlab 中生成将一个周期内取32点,并且将数数值保存下来,又因为标准的正弦信号的幅值范围是-1到+1,所以我们的数据可以乘以255(9位)然后再保存下来,到时只需要赋值给我们的对应的数组就行了。其中,由于在乘积的时候,最后有小数,所以我们利用matlab中的round函数进行四舍五入取整,保存才来。

matlab程序

clc;
clear all;
t = 0:1/32:31/32;
y1 = 255*sin(2*pi*t);
y2 = 255*cos(2*pi*t);
y1 = round(y1); %进行四舍五入
y2 = round(y2);
file = fopen('ram.txt','w+');
fprintf(file,'%d ,',y1);
fprintf(file,'\r\n');
fprintf(file,'%d ,',y2);
figure(1);
subplot(2,1,1);plot(t,y1);
subplot(2,1,2);plot(t,y2);
fclose(file);

其中关于HLS中的程序。
首先我们是用任意精度数据类型来定义我们的数据或者变量,ask 即就是当的需要调制的值是1时,输出其波形,输入数据为 0 时,输出为 0,当输入数据为 1时,输出 sin 与 cos。
这是我们需要的程序。其中这个程序已经是约束过后的程序,我们选择的约束的方式是AXI_stream,#pragma HLS RESOURCE variable=sin_table core=ROM_1P_BRAM latency=1 这是将这个设置为block rom, latency 都是设置为1,。

#include "ap_int.h"
#include"tx.ask.h"
void tx_ask(ap_uint <1> data_in, ap_int<16> *sin,ap_int<16> *cos){
#pragma HLS PIPELINE II=1
#pragma HLS INTERFACE ap_ctrl_none port=return
#pragma HLS INTERFACE axis register both port=cos
#pragma HLS INTERFACE axis register both port=sin
#pragma HLS INTERFACE axis register both port=data_instatic ap_int<8> count;  //函数入口就定义,不然会出错,申请一块内存,ap_int<16> sin_table[32] = {0 ,50 ,98 ,142 ,180 ,212 ,236 ,250 ,255 ,250 ,236 ,212 ,180 ,142 ,98 ,50 ,0 ,-50 ,-98 ,-142 ,-180 ,-212 ,-236 ,-250 ,-255 ,-250 ,-236 ,-212 ,-180 ,-142 ,-98 ,-50};
#pragma HLS RESOURCE variable=sin_table core=ROM_1P_BRAM latency=1ap_int<16> cos_table[32] = {255 ,250 ,236 ,212 ,180 ,142 ,98 ,50 ,0 ,-50 ,-98 ,-142 ,-180 ,-212 ,-236 ,-250 ,-255 ,-250 ,-236 ,-212 ,-180 ,-142 ,-98 ,-50 ,0 ,50 ,98 ,142 ,180 ,212 ,236 ,250};
#pragma HLS RESOURCE variable=cos_table core=ROM_1P_BRAM latency=1if(data_in  == 1){*sin = sin_table[count.range(4,0)]; //由于一个周期只有32个数,所以相当于二进制只用了5位,所以,只用count的5位*cos = cos_table[count.range(4,0)];}else{*sin = 0;*cos = 0;}count ++;if(count == 32) {count = 0;}}

我们将程序写完后,再写了一个testbeech, 测试效果如何。下面是测试文件,测试代码我们的思路与Verilog一致,就是我们要提供 一个激励,然后进行测试就可以了。测试代码如下

#include"tx.ask.h"
int main(){ap_int<1> random_bits[64] = {1, 0, 1, 1, 0, 0, 1 ,1,1, 0, 1, 1, 0, 0, 1 ,1,1, 0, 1, 1, 0, 0, 1 ,1,1, 0, 1, 1, 0, 0, 1 ,1,1, 0, 1, 1, 0, 0, 1 ,1,1, 0, 1, 1, 0, 0, 1 ,1,1, 0, 1, 1, 0, 0, 1 ,1,1, 0, 1, 1, 0, 0, 1 ,1};ap_int<16> cos,sin;for(int i  = 0; i < 64 *400 ; i++){tx_ask(random_bits[i / 400],&sin,&cos);}return 0 ;
}

然后我们可以进行RTL,联合仿真查看波形,

上图中可以看出其满足ASK调制,下图我们将波形放大之后,可以看出其输出的波形是正弦与余弦(相差π/2)

说明:本人写此博客只是为了记录自己跟着尤老师学习关于通信ic 的课程,若本人写的内容有误,欢迎各位指出

hls ask 调制相关推荐

  1. 基于锁相环的调制解调仿真实现

    基于锁相环的调制解调仿真实现 论文+代码+实验结果下载地址:下载地址 摘要 随着现代集成电路技术的发展,锁相环已经成为集成电路设计中非常重要的一个部分,所以对锁相环的研究具有积极的现实意义.锁相环电路 ...

  2. HLS中m3u8格式规范解读

    权威的itef官方文档参见: https://datatracker.ietf.org/doc/draft-pantos-http-live-streaming/ 另外参见苹果官方文档 https:/ ...

  3. 使用Nginx-rtmp-module搭建hls直播

    HTTP Live Streaming(缩写是 HLS)是一个由苹果公司提出的基于HTTP的流媒体网络传输协议.是苹果公司QuickTime X和iPhone软件系统的一部分.它的工作原理是把整个流分 ...

  4. 【FFmpeg】警告:[hls] pkt.duration = 0, maybe the hls segment duration will not precise

    1.问题描述 在使用ffmpeg编程生成m3u8文件时,报警告 [hls @ 0x7f26b4181840] pkt->duration = 0, maybe the hls segment d ...

  5. 计算机网络-编码与调制

    信道: 传输信号: 模拟信道:传送模拟信号 数字信道:传送数字信号 传输介质: 无线信道 有线信道 基带传输:数字信道上传输. 宽带传输:模拟信道上传输. 传输距离近:计算机网络采用基带传输[距离近, ...

  6. qpsk调制解调matlab_本科毕业设计课题—QPSK相干解调的MATLAB仿真(3)

    继续讲解! 给出参考文章! <全数字BPSKQPSK接收机同步技术研究> 模拟中频信号经过模数转换后形成数字中频信号,解调时首先经数字下变频器DDC(digita down-convert ...

  7. 四步相移法怎么获得相位信息_涨知识!5G的调制方式,到底是怎么实现的?

    本文来源:微信公众号中兴文档大家好,今天我们来聊聊调制.说到调制,我想很多同学马上会联想到这些关键词:BPSK.QPSK.调幅.调相.QAM.星座图--众所周知,调制和解调是通信基本业务流程中的重要组 ...

  8. 2dpsk调制解调实验matlab_【无线通信篇】你知道ASK调制吗?

    1.ASK信号的调制原理 数字信号对载波信号的振幅调制称为振幅键控,即ASK. 在2ASK调制系统中,数字信息只有0和1两种,所调制的载波信号的幅度变化状态也只有两种:无载波输出时代表发送0:有载波输 ...

  9. ICCV 2021 | R-MSFM: 用于单目深度估计的循环多尺度特征调制

    标题:R-MSFM: Recurrent Multi-Scale Feature Modulation for Monocular Depth Estimating(ICCV-2021) 作者:Zho ...

  10. hls二次加密 m3u8_HLS实战之Wireshark抓包分析

    0.引言 Wireshark(前称Ethereal)是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用WinPCAP作为接口,直 ...

最新文章

  1. 深度学习基础总结,无一句废话(附完整思维导图)
  2. RIPv2相对于RIPv1来说主要有3方面的改进。下面的选项中,RIPv2的特点不包括【两个题】
  3. mysql-5.5.59安装_MySQL-5.5 安装
  4. 40亿移动设备的用户画像和标签架构实践
  5. hibernate mysql 模糊查询_服务器-hibernate操作mysql,模糊查询时中文查不到,数字和英文可以查到...
  6. Zend Optimizer 相关报错收集
  7. 【GitHub教程】如何使用Eclipse将本地项目上传到github
  8. 【C# interface接口】模拟MP3/AVI播放器
  9. π!到底蕴藏了多少不为人知的秘密?|今日最佳
  10. leetcode404. 左叶子之和
  11. 牛客网与leetcode刷题(高频题中简单or中等的)
  12. pytorch FC_regression
  13. ActiveMQ消息的持久化策略
  14. wordpress付费阅读_2020年27个最佳WordPress杂志主题[免费+付费]
  15. 聊聊CMSIS-RTOS是什么东东
  16. 同义词相似度可以怎样计算
  17. 2022年基站查询、WiFi查询、GPS/经纬度查询的网站与API接口
  18. 微信公众号上传永久图片素材(将阿里云图片上传至微信公众号图片素材)
  19. 微软拼音变成繁体,如何修改为简体
  20. Android 版本号及对应的版本名称

热门文章

  1. 最近开发的NFC读写器控制软件
  2. 【量子信息与量子计算简明教程|陈汉武】阅读笔记1——第一章 量子信息与量子计算的基础概念
  3. Web浏览器测试,怎么提取测试点 - web测试方法总结
  4. micropython源码分析之c模组注册
  5. Redis中Pipeline的使用
  6. 小程序与H5如何混合开发及WEUI那些事
  7. 遥感图像处理 | 辐射校正
  8. uniapp判断是ios、android、小程序
  9. 协作中继认知无线电功率分配
  10. 埃斯顿工业机器人控制柜_埃斯顿estun伺服电机动力线MS3108B22-22S BDM-GA14