- 博客(17)
- 资源 (25)
- 收藏
- 关注
原创 Jesd204b中的参数M
目前的高速ADC/DAC器件普遍采用JESD204B协议,204b参数中有个参数M有点令人费解,M的定义如下:M is the JESD204B parameter for converters per link对于某些adc、dac,M基本上就表示几个adc、dac核,对于某些adc、dac,M可能会又各种值,这对我们选择模式造成了一定困扰。之所以对于一款adda器件,M会各种变化,是因为现在的adda器件除了基本的模数数模转换功能,还包括了一部分dsp功能,特别是ddc、duc,即数字下变频
2022-04-28 23:44:08 2920 3
原创 什么是最佳采样
众所周知,对于低通信号,假设其频谱范围为0<f<fh0<f<f_h0<f<fh,根据奈奎斯特采样定律,必须满足fs≥2fhf_s\geq2f_hfs≥2fh,才能保证不会发生混叠。对于带通信号,假设其频谱范围为fl<f<fhf_l<f<f_hfl<f<fh,根据香农采样定律,必须满足2fln≤fs≤2fh2n+1\frac{2f_l}{n}\leq f_s\leq \frac{2 f_h }{2n+1}n2fl≤f
2022-04-15 22:29:58 1332
原创 复数滤波器转为实数滤波器
在通信雷达等设计中,理论推导中经常用到复数滤波器,比如通道均衡,就需要以一个理想通道为参考,每个通道通过一个复数滤波器,减小通道内幅相随频率的变化,使通道接近理想。通常需要将复数滤波器转为实数滤波器才容易实现。下面推导如何将复数滤波器转为实数滤波器。设输入信号表示输入信号实部即 I 信号,表示输入信号虚部即Q信号滤波器系数表示滤波器系数实部,表示滤波器系数虚部从而原理框图如下图所示。可以看出对于一个N阶的复数滤波器,通常需要用4个N阶的实系数滤波器实现,所以复数滤波器是很
2022-04-14 23:22:54 2932
原创 verilog中的for循环(以FIR分布式算法DA实现为例)
verilog中的for循环(以FIR分布式算法DA实现为例)verilog中有几种循环语句,如for,while,repeat,forever等,for循环是唯一可综合的。在verilog中使用for循环,和在c语言中不一样,只需要记住一点,即verilog中for循环相当于复制展开,记住复制展开这个要点,就能很好理解复杂的代码。先看下面这段代码,一时不好理解,抓住复制这点,重新写一下always@(posedge clk or posedge reset)begin:DA integer k,
2022-04-13 22:39:36 3588
原创 xilinx中FIFO和BRAM实现串并转换的差异
FPGA中经常需要串并转换,比如处理后的数据是16位,而接口(如rapidio)需要64位发送,此时我们就需要串并转换,实现16位入64位出。同样的,有时我们也需要64位入16位出。在进行串并并串转换时,最常使用的就是FIFO和RAM。对于FIFO,假设8位入32位出,那么输出的32位并行数据,先进入FIFO的在高字节,后进入FIFO的在低字节,如下图所示。先后进入FIFO的是8‘h01,8'h00,8'h11,8'h10,当这四字节数据写入FIFO后,读出的32位数据应该是32’h01_00_11_1
2021-07-29 23:41:03 1970
原创 vivado下ECO操作-不重新综合实现修改属性并生成.bit
ECO即engineer change order,即工程变更指令,可以对设计做局部小改动并只对改动部分重新布局布线并生成.bit。在一个工程动辄编译几个小时情况下,可以在调试中节省大量时间。比如我们在调试中,需要改变时钟占空比或者相位,需要改变寄存器初值等等,此时用ECO暂时改动,待验证后在重新编译无疑是最有效率的方法。实现ECO通常有两种方式,一是通过vivado界面完成,另一种方法就是tcl脚本。所有的ECO操作都可以通过tcl操作完成,有的操作用vivado界面无法完成,只能通过tcl。以下主要
2021-07-28 23:06:53 2900 2
原创 vivado 时序例外约束
在不改变代码情况下,时序例外约束可以说是vivado中满足时序要求最有效的方法。因为vivado默认所有时钟路径之间都是同步的,会尝试分析和满足所有的路径。通过设置时序例外约束,告诉vivado软件不需要分析和满足某些时序路径(通常异步),vivado就会尽量去分析和满足真正的同步时序路径。不过一定要注意,在进行时序例外约束时,一定要确保做了亚稳态处理,比如打两拍、异步FIFO、双端口RAM等,或者能确定约束路径发生亚稳态也没关系(比如vio)常用的时序例外约束包括三个命令set_clock_gro
2021-07-27 23:48:01 2976 2
原创 xilinx建议的复位准则
1.尽量少用复位FPGA提供专用的全局复位置位信号GSR,在配置结束后,寄存器状态初始化到设定值或者默认逻辑零状态控制路径可能需要复位,数据路径通常不需要复位使用功能仿真可判断是否需要复位少用复位整体上改善性能,减小面积和功耗2.必须复位时采用同步复位同步复位可直接映射到FPGA架构中的更多功能器件DSP48、块RAM只提供同步复位3.确保使用高电平有效复位因为XILINX内SLICE和内部逻辑等为高电平复位有效,用低电平需要反相器4.避免...
2021-07-25 23:51:41 827
原创 使用FFT实现有理数采样速率转换
为了实现有理数I/D采样率转换,通常的做法是先进行I倍插值,然后低通滤波,滤波器的截止频率为min(pi/I,pi/D),然后进行D倍抽取。不过由于滤波器通常是近似的,恢复出的信号可能不是太好,比如会有振铃等。可以采用基于频域FFF/IFFT方法实现采样率转换,步骤如下(假设采样率转换R=I/D):1.选择一个k*D个采样值块2.在上面选择的块的所有采样值之间插入(I-1)个零点3.计算长度为N=k*I*D的FFT4.在频域使用低通滤波器5.计算长度为N=k*I*D的IFFT6.
2021-07-10 22:50:36 611
原创 matlab对ADC动态性能进行分析
对于ADC采样数据,通常需要进行动态性能分析,测量一些指标如信噪比SNR、信纳比SINAD、无杂散动态范围SFDR等。通常的做法是通过信号源输入一特定频率点频信号,然后对采样数据进行FFT变换,找出主频,各次谐波以及直流并分别求出其信号能量,然后按照定义求各种指标。这一过程在几年前可能需要自己编写代码实现。好在MATLAB后面的版本(大概2014a之后就有了吧,具体没查过)提供了几个函数,使得测量ADC性能指标异常容易。MATLAB提供的函数包括:函数 说明 snr ...
2021-07-04 23:31:59 2914
原创 matlab三维绘图
三维绘图即包含三个变量,通常分为两种:1)一个独立变量t,两外两个变量x,y随t变化。比如曲线的参数方程描述2)两个独立变量x,y,第三个变量z随x,y变化。比如z=x^2+y^2三维绘图函数主要有plot3、mesh、surf、contour,此外还有一些辅助函数meshgrid、alpha等1.plot3plot3主要用于三维线绘图,和plot基本一样,区别就是plot3每个点由x,y,z决定,而plot每个点由x,y决定。t=0:0.1:10;x=cos(2*t);y=.
2021-07-03 18:21:53 6844
原创 matlab 使用fprintf打印度数符号
写程序中碰到一个问题,即想在matlab输出度数符号°和温度符号°C,一时不知道怎么弄。网上查到的都是画图的时候,通过text命令使用'/circ'在matlab的figure做标注。试着直接从网页上一个温度符号到fprintf函数里,竟然能工作,虽然不太好看,勉强能用了。>> str='°C';fprintf('%s\n',str);°C>> size(str)ans = 1 2>> [abs(str(1)) abs(str(2))
2021-06-24 00:23:08 5915
原创 8b10b的理解
8b10编码的作用是为了保持直流平衡。简单说就是发送的串行数据流中,不能出现持续的1或这0,且1和0的个数最好相等。那么在选择编码映射方案时,为什么不选择8b9b了。如果选择8b9b,为了保持直流平衡,只能在9b中选择4个0、5个1,对应的是5个0、4个1,共C94 =126种方案,显然无法满足。那么只能选择8b10b了。在10b中,5个0 5个1共有C105 =252种,比28 =256仅仅少了4个,所以8b不能完全映射到01个数完全相等的10b。如果8b能完全映射到01个数完全相等的10b,那么就不
2021-06-23 00:01:56 1645
原创 matlab去掉for循环方法
最近学习matlab分析和处理几个数据(文件约几百M到一两个G字节),一开始觉得程序很简单,随便写了下,结果matlab处理时间长得让人想哭,边学习边优化,发现主要是for循环占用太长时间,总结下可以去掉for循环的几种情况。1.用克隆运算符(:和end)比如一个长向量,想分别改变奇数位置和偶数位置元素的值,这个很简单a=rand(100);a(1:2:end)=0;a(2:2:end)=1;2.用find或者逻辑索引比如将矩阵中大于等于128的数减去256(8位补码转为有符号...
2021-06-21 23:57:52 2538
原创 ADC、DAC的多芯片同步和确定性延迟
多芯片同步和确定性延迟是高速采集和波形产生中经常碰到的概念,特别是使用最新的基于JESD204B协议的ADC、DAC。这两个概念在JESD204B协议产生前就有了,不过采用204B协议后,实现多芯片同步和确定性延时变得简单了。在204B协议中,我们都知道:**subclass 0不支持确定性延时,subclass 1支持确定性延时,使用sysref信号subclass 2支持确定性延时,使用sync信号按照字面理解,多芯片同步就是多个器件延时一致。例如,同一触发控制多片ADC采集同一个点频信号
2020-08-11 23:47:00 6346
原创 FPGA中复位同步模块
FPGA中复位同步模块在FPGA项目中,通常有一个外部复位或者根据锁相环锁定计数后产生一个内部复位。由于大部分FPGA中有多个时钟,为避免亚稳态,需要将复位同步到另一个时钟域。为此,我们可以将这种最常用的打拍同步操作作为一个常用的module;同时,使用标准异步复位同步释放的方式。下面代码是vivado例子工程wave_gen中的做法,供参考。module reset_bridge ( input clk_dst, // Destination clock inp
2020-07-29 23:49:52 444
原创 verilog向量位的选择
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2020-07-27 23:23:53 9639
<C函数速查手册>实例代码
2009-07-18
《C 语言105例》源码
2009-07-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人