# QPSK_IMPLEMENTATION_USING_AD9361 **Repository Path**: jiawei-gitee/qpsk_-implementation_-using_-ad9361 ## Basic Information - **Project Name**: QPSK_IMPLEMENTATION_USING_AD9361 - **Description**: No description available - **Primary Language**: Verilog - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2021-11-21 - **Last Updated**: 2024-09-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 2021.11.21 本工程文件为2021年学习**QPSK**开发创建的Vivado2019.1工程文件,作为后续开发的基础`base`工程。 由于前序开发的时候没有合理的引入`git`,导致出现了若干`branch`分散在各个文件夹内的问题,并且当前存在着若干文件夹同步开发的现状。各个`branch`开发进度不一样,因此在2021.11.21在发射机完成的基础上引入`git`,规范后续的文件开发。 当前考虑引入`git`后创建3个`branch`,分别为: 1. `main-branch`,存放当前可用的版本,可以随时测试的版本 2. `tx_fifo-branch`,主要为了解决发射机的多个时钟跨时钟域的问题 3. `rx_gardner-branch`,主要为了解决接收机的`Gardner`环的调试问题 已推送到https://gitee.com/jiawei-gitee/qpsk_-implementation_-using_-ad9361 remote同步 # 2021.11.21 `rx_gardner`开始工作 # 2021.11.22 开始修改`rx_gardner`部分的代码,将之前写的可以作为参考代码的`rx_gardner`备份为`rx_gardner_copy`待用; 目前已完成`nco`部分的工作,已部分完成`farrow`的工作,正在添加`error`和`wk`部分的工作,等待检查`farrow`相关的`flag`量的工作。 # 2021.11.23 完善了`nco`部分的全部逻辑,完善了`farrow`部分的全部逻辑,目前根据`matlab`定点对照仿真结果来看实现了`nco`+`farrow`内插的全部功能。 下一步需要将`farrow`输出的结果(保存在`signal_farrow_i_delay`和`signal_farrow_q_delay`中)进行误差计算,这部分暂时没有牵扯到`matlab`的定点化工作,需要同步进行`matlab`的定点化修改。 # 2021.11.25 以内插前数据`-188,-138,99,499,944,1275,1375,1217`为例 前四个内插结果为`-39`,中间四个内插结果为`774`,后四个内插结果为`1392` 误差计算结果为`1096`,和`matlab`定点仿真误差约束在10以内,可以接受,之所以有误差是因为之前的用的不是`floor()`而是`round()` 目前来看已经解决了所有的结构问题,只剩下最后的环路滤波的问题,因为在`matlab`中用`floor`进行运算会导致误差而用`round`缺不会导致误差,如果用`bias`修正则可以消除误差。因此要不要引入`bias`,还是说之前的结果存在问题? # 2021.12.3 目前已经完成了`gardner`部分,参考`QPSK_SIMULATION_FIXED_POINT.m` 和网络上的区别在于环路滤波器这个地方用的是一个积分器,没有用杜勇的差分的结构 # 2021.12.4 准备开始单板单发单收的功能,学习`agc`的写法 # 2021.12.5 开始了上板测试的工作,修改了tx和`rx`的若干接口名字,修改了`mapping`处的逻辑,目前可以看到波形,后续在此版本上继续工作。 但是暂时波形不太理想,主要在于接收端的幅值比较低,可能影响了`Gardner`环的工作?考虑后续在`matlab`中修改接收端的幅值进行仿真测试,考虑加入`AGC`改进 mapping的结果比较奇怪,`matlab`仿真的结果和上板测试的数据不一样,目前暂时不知道具体原因 目前加入了`8192`的`ila`进行观察 # 2021.12.6 修改了`mapping`的逻辑,目前来看已经波形上`modelsim`仿真和上板波形、`matlab`波形三者一致 修改了`tx`和`rx`关于`ila`部分的接口,目前系统能够正常工作 但是存在相位模糊的问题,暂时不作进一步改进 # 2021.12.7 总结2021.12.6工作,完成了`tx`和`rx`的调试,目前存在相位模糊的问题,当前着重解决`AGC`的问题 # 2021.12.15 加入了`readme`文件,修改了`gitignore`文件 # 2021.12.17 根据`matlab`修改了`QPSK`的`Gardner`的`loop filter`的截位部分的代码,重构了`error`的位数 # 2022.1.17 开始写`rx_pll`模块,加入了`nco`模块开始测试`nco`功能 # 2022.1.18 1. 写了`pll`的鉴相器部分的代码 2. 开始`gardner`的`fpga`的仿真测试,加入了`tb_clk`模块作为`testbench`的`50MHz`转`60MHz`,修改了`top`模块对应的接口`(p1)` # 2022.1.20 1. 删除了`top`的`ila`模块,修改了和`tb_top`调试相关的几个接口 2. 修改了`tb_top`的涉及调试的变量名字,修改了`tb_top`的文件读写的操作,更加规范和自动化了。 # 2022.1.23 1. 对于`top`和`tb_top`部分主要加入了`locked`控制信号控制`index_data`的增加 2. 使用`testdata_gardner_5`的数据,`MATLAB`和`modelsim`的仿真结果一样 3. `Gardner`测试完毕 # 2022.1.27 1. 完成了`pll`部分的工作,之前总是出现隔一段时间就失锁的原因是因为信号重新载入导致刚开始的信号只有噪声没有信息,需要在之后加入信号捕获相关的内容 2. 删除了调试的`top`接口,完成了`synthesis`和`implementation`以及`bitstream generate` # 2022.1.29 还原top的测试端口,准备开始`agc`工作 # 2022.1.30 1. `rx_agc`完成并测试完成,但是输出从之前的`12bit`变成了`16bit`,考虑修改后续所有的接口以及内部逻辑适应`16it` 2. **修改完成** # 2022.2.4 add LICENSE # 2022.2.7 1. 完善了`AGC`部分的最大增益限幅,解决了因为`AGC`导致的`gardner`无法锁定的问题 2. 完成了`synthesis`和`implementation`以及`Bitstream generate`,准备明天继续上板测试 3. 补充注释 # 2022.2.7 `rx_gardner branch close` `master branch stay`