- 博客(27)
- 资源 (3)
- 收藏
- 关注
原创 Verilog 冒泡排序源代码分享,任意位宽任意长度数组,百行代码搞定。
思路:比较数组相邻两个寄存器内值的大小,如果 array[i+1]>=array[i] 两个寄存器值不变,否则交换两个寄存器的值。
2024-11-01 21:44:29 100
原创 Vivado FPGA调试报错记录
有多个DDR IP核时,Enable一个输出温度,其他Disable输入温度。例化了多个XADC,但XADC硬件资源没有那么多。
2023-08-23 16:55:09 484
原创 抗窄带干扰窄带抑制算法及其FPGA实现
等待半窗–>加窗 --> FFT --> 频域抑制 --> IFFT --> 反加窗–> 输出窗中间部分。窄带干扰对信号解调、二阶谱识别等信号处理有较大影响。窄带干扰影响较大时通常会在宽带对窄带信号进行抑制。加窗 --> FFT --> 频域抑制 --> IFFT --> 反加窗 --> 输出窗中间部分。上面方案实际在FPGA中应用效果较好。
2023-04-25 22:17:07 780 1
原创 FPGA调试问题记录(软件无线电)
输出的频率不是精确的,比如驱动时钟是204.8MHz需要产生1MHz的正弦波形时如果相位的精度是32位,则每个时钟的相位增量就是(1M/204.8M)*(2^32) = 20,971,520 是一个整数,dds产生的正弦波频率为1MHz。此时就需要将丢失0.48的相位补偿回来补偿的周期为0.48与1的最小公倍数25(0.48*25=1*12),也就是第25时钟时相位的增量21,474,8367+12 (21,474,836.48*25==21,474,836*24+21,474,836+12)。
2023-03-11 22:05:13 2133
原创 无公式搞懂GMSK调制原理,附详细注释的matlab GMSK调制解调原理仿真源码
一、原理GMSK调制是一种连续相位调制,每个码元会对信号产生π的相位变化,但产生变化的过程不在一个码元时间内,而是分散到L个码元时间内。假设每个码元对相位的影响在6个码元时间内完成,相位成形函数如下图:码元对相位的影响按照相位成形函数在6个码元时间内对信号产生0.5或-0.5个周期的影响。% 高斯曲线function J_g = gauss_wave(n)peak = 1; %波峰值 peak=1/(sqrt(2*pi)*sigma)sigma=(1/(peak*sqrt(2*pi
2021-11-05 09:18:16 18481 4
原创 数字下变频 FPFA ddc原理、数字变频 iq采样 matlab仿真 与vivado dds ip核的使用与dds ip核频率校正
一、数字变频原理(积化和差,取和或取差)二、matlab仿真三、dds ip核工作原理四、dds ip核频率校正
2021-10-29 16:16:35 5694
原创 ADC RF中频采样 Vivado Verilog 联合 matlab 进行带通滤波器设计与仿真
1.滤波器参数计算RF中频信号的频率范围为70MHz±2MHz,采样频率为40.625MHz。采样后信号的频谱是原信号频谱以40.625MHz为周期的频谱搬移,根据奈奎斯特采样定理,40.625MHz采样率的奈奎斯特采样区为[N*20.3125,(N+1)*20.3125] MHz (N为自然数)。频谱搬移在第一奈奎斯特采样区为11.25MHz±2MHz(负频率向右的两次频移)。所以滤波器的通带需要设计为9.25MHz~13.25MHz通过的带通滤波器。2.通过matlab的fdatool工具进行滤波器
2021-10-25 11:47:31 1331
原创 [Synth 8-3438] module ‘core‘ declared at ‘XXX‘ does not have any parameter ‘param‘ used as named
原文:Vivado IP Flows - ERROR: [Synth 8-3438] module ‘my_core’ declared at ‘XXX’ does not have any parameter ‘my_param’ used as named parameter override采用OOC模式生成的IP核由于生成的是网表文件,IP核的参数已经固定无法再更改,例化时如果改变了IP核的传入参数(parameter values)就会出现这种错误。OOC模式要改变IP核参数需要重新生成IP核
2021-07-06 18:01:32 2240
原创 不同位宽 双口ram 输入输出 对应地址 地址对应 数据结构转换
不管是高位宽输入低位宽输出还是低位宽输入高位宽输出地址的映射结构都是一样的。例如:输入位宽位 32bit 输出位宽位 8bit向ram前四个地址输入:地址:输入00 : 0001020301 : 1011121310 : 2021222311 : 30313233则,读取时地址:输出0000:030001:020010:010011:000100:130101:12。。。不管是高位到低位还是低位到高位,都是低位宽合并为高位宽,低位宽的起始地址从高位宽起始地址中数据的低位
2021-06-16 18:00:05 4486 8
原创 gfp 通用成帧程序 帧结构 校验 crc 多项式 加扰
GFP帧长最大为65535字节,GFP帧结构如下://-------------核心报头----------------PLI:净荷长度指示符,表示4个字节的核心帧头后面的净荷区的字节数。cHEC:核心报头差错控制字段,校验生成多项式:crc-16/xmodem x16+x12+x5+1在网站http://www.ip33.com/crc.html可以计算校验码。最后总的核心报头四字节异或上 B6AB31E0 进行核心报头的扰码。//---------------净荷区------------
2021-05-27 15:37:28 3134
原创 FPGA 仿真与实际不一样,仿真没有打拍,仿真时钟问题。
代码明明有打拍但仿真却没有打拍,最后发现是因为仿真文件给的信号与时钟在同一时刻造成时钟边缘没有采样上。解决方法:不使用驱动仿真文件中信号生成的时钟作为仿真时钟,使用一个与它不同相的时钟作为仿真时钟。比如clk_1在仿真文件内部用于产生仿真信号。与clk_1不同相的clk_2作为仿真时钟输出。...
2021-04-30 11:24:42 3363 1
原创 vscode自定义代码片段编写,tab缩进,初始值,默认值官方指南
"process":{ "prefix": "gen",//触发关键字 "body": [ "--$1_gen$2", //$1 $2 按顺序标记 tab 跳转位置 "$1_gen : process( ${3:rst_n, clk_i} )", //${num:default} 包含初始值的标记 "begin", "\t$0", //$0为光标最后停留位置 "end process" ], "description": "process generate".
2021-02-24 12:41:13 1450
转载 Total Negative Slack ( TNS ) Worst Negative Slack ( WNS )
The “Worst Negative Slack (WNS)” reported by commands like report_timing_summary is actually the worst positive slack. If WNS is positive then it means that the path passes. If it is negative, then it means the path fails. So, this is really a misnomer.Th
2020-12-31 09:36:36 3034
原创 FPGA Vivado XDC 约束文件编写方式语法笔记
参考手册:UG625:https://china.xilinx.com/support/documentation/sw_manuals/xilinx14_7/cgd.pdf一、时钟约束1.时钟clk0的周期为10ns占空比为50%相移为0其约束形式为:clk0: period = 10, waveform = {0 5} // {0, 5} 表示一个周期的波形中0ns - 5ns 为高。2.时钟clk1的周期为8ns占空比为75%(6ns)相移为2ns其约束形式为:clk1: period
2020-12-29 17:23:04 40973 7
原创 Verilog # parameter参数传入generate参数重定义举例说明
// para 模块module para( input clk, input rst, input [WA-1:0] a, input [WB-1:0] b, output reg [WS-1:0] sum );parameter WA = 1;parameter WB = 1;parameter WS = 2;always @(posedge clk)begin
2020-12-29 15:10:15 2805
转载 FPGA 组合逻辑层次 运行频率时钟频率计算 流水线设计提高运行频率
上一个D 触发器的输出到下一个D 触发器的输入所经过的LUT 的个数就是组合逻辑的层次( Lut Levels )。Tlogic = 4 * Tlut // 4层的组合逻辑延时,Tlut为查找表延时业内对布线延时与逻辑延时的统计分析表明, 逻辑延时与布线延时的比值约为1:1 到1:2.由于我们所选用的芯片大量的已经进入0.18um 和0.13um 深亚微米的工艺,因此我们取逻辑延时与布线延时的比值为1:2. Troute = 2 * Tlogic // 最大延时 = D 触
2020-12-10 09:52:42 1993 1
原创 FPGA Verilog md5算法实现源代码及仿真文件分享。
md5 算法标准:https://tools.ietf.org/html/rfc1321MD5 算法有 5 个步骤:1.将数据从头开始按 512 个 bit 划分成块。在最后一位数据后面添加一位 1 后,再继续添加一定数量的 0 使最后一块数据有448(512-64)位。2.在剩下的64位里填入实际数据的长度。3.将512位的块按32位分为16份,使用a、b、c、d四个32位参数与这16份数据与都进行4轮函数变换(共64次)。最后得到变换后的a、b、c、d。4.将变换后的a、b、c、d与下一块数据
2020-11-21 16:57:17 2879 9
原创 EXCEL VBA 实现翻译(简单对照)
'ab列为词典,其中a列为中文,b列为对应翻译。现在d列有需要翻译的中文,请在e列填入其对应的翻译Sub Trans()Dim di As IntegerDim rng As RangeFor di = 1 To Range("d65536 ").End(xlUp).Row '遍历到d列有信心的最后一列 If Range("d" & di) = Empty Then '如果中间有空的列则跳过 Else Set rng = Ra
2020-09-30 16:29:06 6297
原创 Excel 十六进制 16进制 0x 转 十进制 10进制 =HEX2DEC(A1)
十六进制数不带“0x”前缀时使用= HEX2DEC(A1)A1为目标所在的表格坐标十六进制数带“0x”前缀时使用=HEX2DEC(RIGHT(A1,LEN(A1)-2))其中 RIGHT(A1,LEN(A1)-2) 是将A1所在单元格的内容将去掉前两个字节。如果A1内容为0x3A,则 =RIGHT(A1,LEN(A1)-2) 的值就为3A。再通过 =HEX2DEC() 转换就能得到十进...
2020-04-24 13:15:07 19452 1
原创 c++ template类模板声明及其实例化
#include<iostream>using std::cout;using std::endl;template<class T>//类模板声明class Compare{public: T max(T x, T y) { return(x>y?x:y);//返回最大值 } private: T x; T y;};in...
2020-04-22 16:05:30 539
原创 “生命游戏”c++源代码
#include<iostream>#include<time.h>using namespace std;#define X 20 //地图高度#define Y 30 //地图宽度#define LIMIT 0.3void delay(int ms){ clock_t start = clock(); while (clock() - start &l...
2020-04-21 10:32:56 2428 2
FPGA Verilog md5 加密 工程源文件源代码MD5.rar
2020-12-17
md5验证工具及工具源码md5.exe md5.c
2020-11-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人