
AD9361
文章平均质量分 61
mcupro
这个作者很懒,什么都没留下…
展开
-
openofdm初探之二:PDF阅读笔记123
笔记一:从射频芯片下变频出来的基带信号进入解码流水线经历了以下处理步骤:1,包检测2,中心频率校准3,快速傅里叶变换 (后续的操作将在频域上)4,信道增益估计5,解码6,去交织7,卷积译码8,解扰笔记二:顶层模块以及定义下图是顶层模块:下表是信号说明:我梳理一下:clock: 时钟内部都采用posedgeenable:模块使能,高电平有效。reset:模块复位,高电平有效set_stb,set_addr,set_data:是设.原创 2021-11-09 01:37:50 · 923 阅读 · 0 评论 -
一个FM发送信号的简单例子
// CW SOS FM Transmitter based on http://hamsterworks.co.nz/mediawiki/index.php/FM_SOSmodule top(input clk, output clkin, modout, lock); wire clkout;// PLL running at 255 MHz (near max 27...原创 2020-04-15 12:29:18 · 931 阅读 · 0 评论 -
做一个FSK的收发试验 之五
其实一个项目最重要的是在规划和实现,在规划和实现上多动脑子,多花时间,后续调试会很顺利。现在进行最终的调试了。从效果上进行检查就是在bb_bit_in输入,之后在bb_bit_out输出,看输入输出是否对应。作为比较简单的测试我们可以在bb_bit_in接入一个计数器,每秒变化一次,之后在bb_bit_out接一个led,看LED是否正常闪烁。我做过这步成功后,我使用了一个PMOD...原创 2020-02-26 20:40:50 · 557 阅读 · 0 评论 -
做一个FSK的收发试验 之四
写这个BLOG时已经已经自发自收取得了成功。这个BLOG属于简单回顾。我们这个FSK的基本思路就是传递数据0时候一个频率,传递1时候是另外一个频率。我们通过DDS合成不同的频率,而通过过零检测实现对接收到基带频率统计周期的计算,从而判断是在那个频率点上,以解调出来0或者1。我们这里做一个接口,查看一下在不同的频率设置点上,收到的信号周期都是多少。这个c...原创 2020-02-26 19:48:45 · 597 阅读 · 0 评论 -
做一个FSK的收发试验 之三
之前我们写好了收发模块并进行了仿真,这个BLOG我就尝试在ZEDBOARD+FMCOMMS3试验平台上实现。我们看上篇BLOG实现到的效果,BIT_IN经过了调制,之后经过解调(符号位过0检测)直接反应到BIT_OUT。而我们实际在试验平台上检测要加上射频部分。大体过程这样:发送端:BIT_IN -> FSK_modulator -> 上变频到2.4G(别的频率也可以)...原创 2020-02-25 21:10:47 · 1122 阅读 · 2 评论 -
做一个FSK的收发试验 之二
有了上述的代码我们尝试攒在一起,进行仿真一下。这里直接将接受和发送都放在一起进行测试。写代码如下: module tb ;reg clk=;always #5 clk = !clk ; reg bit_in;wire bit_out;wire [11:0]sin,cos ; reg [15:0]c ;always@(posedge clk )c <= (c==...原创 2020-02-25 02:41:20 · 678 阅读 · 0 评论 -
自己写的一个非常简洁的DDS信号发生器以及验证
DDS其实就是输出点,直接画出波形。例子1,假设基带采样时钟是360M,如果每个完整的正弦波形用360个点画出来,构造出来的DDS波形是360M/360=1M。例子2,在同样的采样时钟之下,如果我们要DDS出一个0.5M的波形怎么办呢:其实就是用360M/0.5M=720个点。就是说我们用720个点构造出一个完整正弦波。如果我们的sin表是由360个数值对应0-359度,...原创 2020-02-25 15:49:29 · 752 阅读 · 1 评论 -
使用官方的HDL试验ADC数据 之一
这里主要是对DAC数据通道的UNPACK模块进行分析和替换。DAC就是发射部分,就是基带通过DDS方式“画”出波形,供给9361进行混频和发射。我们官方HDL项目里面提供了从内存DDR3到AD9361引脚的数据通道。我们之前的BLOG都已经分析了,这里再简单回顾一下。首先使用AXI_DMAC,将数据经过PS的HP高速接口从DDR3取出。这里取出来是64位的,我们要根据实际要发送的是2T还是...原创 2020-02-23 22:41:30 · 1567 阅读 · 3 评论 -
使用官方的HDL试验DAC输出 之二
上一个BLOG分析了ADC输出的ENABLE,VALID,DATA信号。补充一张在旁边呜呜响的频谱分析仪的图:我们看到中心频率是2.4G,在2.4G技术上加了大约半个,每格式2M,半格就是1M。这是因为我们使用的是2.4G射频,基带上DDS出了一个1M的正弦波,又因为发射端是上变频,射频加基带的DDS频率。所以就显示成了2.4g+1m的样子。咱们在上一个BLOG里面看的波形频率是...原创 2020-02-23 01:32:32 · 1002 阅读 · 1 评论 -
使用官方的HDL试验DAC输出 之一
官方的AD9361接口做得很完善,我觉得应该花时间研究透彻。正好这段时间难得的安静,我就专门做做试验研究学习一下。AXI_AD9361这个模块咱们之前的博客分析了几次,今天试验ADC的输出,看看ENBALE,VALID和数据这三者之间关系。其实查看代码可以看到ENABLE是处理器通过AXI LITE接口设置,而VALID是用于数据通讯进行数据指示的。为什么要有这两个信号呢,我的猜测(后续查...原创 2020-02-22 23:39:08 · 1289 阅读 · 1 评论 -
AD9361 自检功能所采用的数据
输出TONE数据时候正交的两路如下: 0,-1024,391,-946,724,-725,946,-392,1023,0,946,391,724,724,391,946,0,1023,-392,946,-725,724,-946,391,-1024,0,-946,-392,-725,-725,-392,-946,0,-1024, // 依次循环以上是I...原创 2020-02-10 03:09:02 · 2372 阅读 · 2 评论 -
一个简单的测量频率的模块
为了方便试验时候测试基带的频率。/*frq_cal #(.REF_FRQ ( 100*1000*1000)) frq_cal(.sig(),.clk(), .res(),.update());*/module frq_cal #(parameter REF_FRQ = 100*1000*1000)(input sig,input clk,output reg...原创 2020-02-10 00:23:54 · 1591 阅读 · 0 评论 -
替换掉NO_OS逻辑和代码中的SPI部分
在纯粹逻辑的配置中我写一个外设,进行SPI接口的读写。几乎是跟AD9361定制的SPI接口:发送三个字节,接收到一个字节。这个小控制器为了简单,只实现对一个AD9361寄存器的读写。我打算将这个一直到NO-OS那套软件硬件代码里面这样减少对ZYNQ硬件外设的依赖,使得这套C代码更容易移植。关于AD9361中SPI的时序,在接口手册上明确写了,并给出了波形和时序。这里贴出来部分这个控制器...原创 2020-02-08 23:04:18 · 1614 阅读 · 2 评论 -
对AD9361的数据接口延迟设置的分析和记录
通过参看AD9361的寄存器说明手册,收发数据线的时钟和数据DELAY 各自是16级可调打印出了NO-OS代码写006,007号寄存器的操作:Hello Worldlw:reg[6]=0x04lw:reg[7]=0x70lw:ad9361_dig_tune_rxlw:ad9361_dig_tune_delaylw:reg[6]=0x00lw:reg[6]=0x01l...原创 2020-02-08 20:32:04 · 5866 阅读 · 4 评论 -
AD9361 的NO-OS代码命令
基本涵盖了ad9361_api.c里面的全部函数,写在这里备份。Available commands:help? - Displays all available commands.register? - Gets the specified register value.tx_lo_freq? - Gets current TX LO frequency [MHz].tx_lo...原创 2020-02-08 16:46:32 · 3698 阅读 · 3 评论 -
DEV-CPP 下获取MAC地址的代码
//#include"stdafx.h"#include <WinSock2.h>#include <Iphlpapi.h>#include <iostream>#include "stdio.h"using namespace std;#pragma comment(lib,"Netapi32.lib")///需要Iphlpapi.l...原创 2020-01-12 20:25:20 · 1570 阅读 · 1 评论 -
AD9361 随笔记录 AXI_AD9361模块的分析之对外接口篇
之前对官方的AXI_AD9361这个模块内部的输入输出接口进行了详细的分析,分析的详细视频发布在自己所卖板子的配套的教程视频里面。这里我们从AXI_LITE寄存器层面进行分析,看看控制总线接口对外公布了多少寄存器以及各自的功能。下图表示了在系统中的位置:我们先来看接口:分这些部分:1,接AD9361的引脚,如下图:具体输入有rx_clk_n,r...原创 2019-12-16 13:01:31 · 6382 阅读 · 2 评论 -
Zedboard + AD9361底层接口的分析 之二 ADC 通路的接口分析
所谓ADC通路,就是AD9361接收端数据经由FMC到达ZEDBOARD上XC7Z020芯片的PL引脚后,最后直到DDR3,内部通过的数据路径。如下图:我这里简单说一下图中各个模块:1,AXI_9361,这是跟9361接口的最前沿,无论接收和发送端,都是经由了这个模块。内部有时钟的处理,双边缘采集的处理,双边缘发送的实现。这个由于实现细节太多,需要专门分析。2,wfifo模块,这个...原创 2019-08-10 15:33:46 · 4845 阅读 · 0 评论 -
AD9361 随笔记录 AD9361状态机的几种工作模式
enum ad9361_ensm_mode { ENSM_MODE_TX, ENSM_MODE_RX, ENSM_MODE_ALERT, ENSM_MODE_FDD, ENSM_MODE_WAIT, ENSM_MODE_SLEEP, ENSM_MODE_PINCTRL, ENSM_MODE_PINCTRL_FDD_INDEP,};...原创 2019-08-10 17:04:41 · 3115 阅读 · 0 评论 -
AD9361 随笔记录 收发器fastlock相关的用户函数
代码取自no_os的ad9361_api.c文件。我们先来看看fastlock中发送部分的相关代码:/** * Store TX fastlock profile. * To create a profile tune the synthesizer (ad9361_set_tx_lo_freq()) and then * call this function specifyi...原创 2019-08-10 18:32:53 · 2729 阅读 · 3 评论 -
Zedboard + AD9361底层接口的分析 之三 AXI_AD9361模块的分析
这个AXI_AD9361模块跟上述分析仪的PACK和UNPACK模块相比,除了连接片内其他模块之外还连接AD9361芯片。应该说是AD9361跟内部其他模块的接口。我们来看看都链接那些9361芯片的引脚:上图中黄色线是链接9361模块的,我们再放大看看:在模块左边的脚是输入接收AD9361芯片的输出。右边的脚是输出给AD9361芯片。各自分析一下这些脚:...原创 2019-08-20 11:34:53 · 4610 阅读 · 0 评论 -
up_axi 一个将axi_lite接口转换成寄存器接口的模块
这是ADI提供的小模块。1,加入了防止死机的判断,8个周期后没有完成操作自动相应ack总线。2,会一直保持up_wreq,直到master端撤销写请求。这就需要检测第一个up_wreq的跳变作为实际的写,或者有严谨的握手信号处理。`timescale 1ns/100psmodule up_axi ( // reset and clocks up_rstn...原创 2019-08-20 11:40:44 · 1885 阅读 · 3 评论 -
ad_lvds_clk 将外部时钟同步到本芯片的时钟网络代码
module ad_lvds_clk ( clk_in_p, clk_in_n, clk); parameter DEVICE_TYPE = 0; localparam SERIES7 = 0; localparam VIRTEX6 = 1; input clk_in_p; input clk_i...原创 2019-08-20 12:21:34 · 994 阅读 · 0 评论 -
mul_u16 五级流水线无符号乘法器
module mul_u16 ( // data_p = data_a * data_b; clk, data_a, data_b, data_p, // delay interface ddata_in, ddata_out); // delayed data bus width parameter DELAY_DATA_WIDTH =...原创 2019-08-20 12:24:58 · 1488 阅读 · 1 评论 -
Zedboard + AD9361底层接口的分析 之一 system_util_ad9361_dac_upack 对外接口分析
首先我们看BLOCK DESIGN里面实际的接口图:我们看到总体的数据流向是:给模块输入64位数据,之后分成了4组16位的数据数据输出。结合unpack这个模块名,我们都可以想到是64位并列分成4组。主要是是看看控制和标志部分是如何工作的。我们看到dac_valid_[0...3]和dac_enale[0:3]以及4组16位数据总线都接在AXI_9361的接口模块上。我...原创 2019-08-09 11:33:37 · 3511 阅读 · 1 评论