自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

原创 联发科23实习 22春招

23实习22春招联发科内推码: MMNLV网址:http://mediatek-campus2023.zhaopin.com/

2022-03-05 20:40:57 322

原创 如何批量修改文件名称

1、打开要修改的文件2、新建一个文本文件**1)**输入:dir *.docx /b>rename.xls**2)**保存退出**3)**文件(.txt)重命名为(.bat)4)双击运行,产生一个rename.xls文件3、xls文件处理1)打开文件2)B列输入重命名的名字,C列输入REN函数(rename),D列输入=C1&" “&A1&” "&B1实现字符串连接,注意两个引号中间有空格3)将D列复制到一个新的文本文件里面,另存为.ba

2021-10-09 11:38:03 652

转载 同步复位和异步复位

同步复位:同步复位就是指复位信号只有在时钟上升沿到来时,才能有效module sync_rst( input clk_i, input rst_n, input din, output reg dout ); always @(posedge clk_i) begin if(!rst_n) dout <= 0; else dout <= din; end endmodule异步复位:异步复位是指无论时钟沿是否到来,只要复

2021-07-15 16:52:59 1027

原创 同步时序和异步时序的区别

同步时序逻辑:时钟之间有固定的因果关系,只有一个时钟源,各触发器的时钟端连接在一起异步时序逻辑:各时钟之间没有固定的因果关系,不是一个时钟源,电路除了使用带时钟的触发器外,还使用了不带时钟的触发器和延迟元件。...

2021-07-15 16:38:08 4787

转载 AHB总线协议(一)

参考:AHB总线协议(一)简介AHB(Advanced High Performance Bus)总线规范是AMBA(Advanced Microcontroller Bus Architecture) V2.0总线规范的一部分,AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-performance Bus)、ASB (Advanced System Bus)、APB (Advanced Peripheral Bus)。AHB用于高性能

2021-07-12 19:58:59 1021

转载 Verilog对数据进行四舍五入(round)与饱和(saturation)截位

一、引言在利用Verilog写数字信号处理相关算法的过程中往往涉及到对数据的量化以及截位处理。而在实际项目中,一种比较精确的处理方式就是先对截位后的数据进行四舍五入(round),如果在四舍五入的过程中由于进位导致数据溢出,那么我们一般会对信号做饱和(saturation)处理。所谓饱和处理就是如果计算结果超出了要求的数据格式能存储的数据的最大值,那么就用最大值去表示这个数据,如果计算结果超出了要求的数据格式能存储的数据的最最小值,那么就用最小值去表示这个数据。这里先不给例子,下文会详细描述这种情况。为

2021-07-05 21:10:56 11133 4

原创 全加器和半加器设计

全加器AinBinCinSumCout0000000110010100110110010101011100111111和等于异或进位等于AB+AC+BC半加器AinBinSum000011101110和等于异或

2021-07-01 10:08:02 786

转载 键盘扫描程序

步骤:1、列输入0,行检测是不是全为0;2、行检测到0,一列依次为0,看行是不是还是03、如果是根据行和列的值判断是第几行第几列。Verilog HDL 4*4矩阵键盘扫描程序module key( clk, //50MHZ reset, row, //行 col, //列 key_value //键值);input clk,reset; input [3:0] row; output [3:0] col; output [3:0] key

2021-07-01 09:44:21 2547 2

原创 如何回答职业规划

第一步:说明自己对岗位的理解和从事这份工作的原因。阐述自己看好行业阐述自己对岗位的理解阐述自己适合这个工作第二步:说明自己愿意为这份工作付出努力。表达自己过去的努力表达自己愿意付出的努力表达自己大致的努力方向第三步:说明自己长远的目标和规划。参考:为何面试时都会问你的职业规划呢?该如何回答呢?...

2021-06-29 18:33:46 183 1

原创 用加法实现乘法器实现

a乘bb的第n位是1的话,加a,如果是0,不变,然后左移一位,继续下一位计算。`timescale 1ns / 1psmodule div_top(input clk,input [3:0] a,input [3:0] b,output reg [7:0] ji);integer i;always@(*) begin for(i=0;i<4;i=i+1) begin if(a[i]) ji=ji+(a<<i); end endendmo

2021-06-27 18:28:04 2557

转载 FPGA上如何求32个输入的最大值和次大值:分治

上午在论坛看到个热帖,里头的题目挺有意思的,简单的记录了一下。0. 题目在FPGA上实现一个模块,求32个输入中的最大值和次大值,32个输入由一个时钟周期给出。(题目来自论坛,面试题,如果觉得不合适请留言删除)从我个人的观点来看,这是一道很好的面试题目:其一是这大概是某些机器学习算法实现过程中遇到的问题的简化,是很有意义的一道题目;其二是这道题目不仅要求FPGA代码能力,还有很多可以在算法上优化的可能;当然,输入的位宽可能会影响最终的解题思路和最终的实现可能性。但位宽在一定范围内,譬如8或者32

2021-06-27 17:35:40 546

原创 verilog 的generater_for用法

1、generater_for作用:复制模块always中的for是串行执行的generater_for中的always是进行并行执行具体可以看下面的文章verilog中generate语句的用法2、注意事项(1)必须有genvar关键字定义for语句的变量。(2)for语句的内容必须加begin和end(即使就一句)。(3)for语句必须有个名字。3、可以用作数组的传递如:要传递32个8位数据input [7:0] data [31:0]是不对的可以这样写input [32

2021-06-27 17:12:46 655

原创 verilog除法器

FPGA除法器设计实现除法器设计需要注意:1、两个输入值最高位可能不是0,如4位的除数,但实际是4‘b00012、余数和商要和被除数位数一样,如除数为1,商等于被除数。3、要判断除数不等于0.原理:从被除数最高位开始,一次移一位,判断是否大于除数,大于除数,减去除数,商加1。程序:`timescale 1ns / 1psmodule div_top(input [15:0] a,input [7:0] b,output [15:0] shang,output [15:0] yu

2021-06-26 15:16:29 2674 1

原创 与或非门输入x和z,输出状态

`timescale 1ns/1ps;module top1();reg a=1'b0x;reg b=1;wire c;wire d;wire f;assign c=a&b;assign d=a|b;assign f=!a;endmodulemodule top1();reg a=1'b0z;reg b=1;wire c;wire d;wire f;assign c=a&b;assign d=a|b;assign f=!a;endmodule

2021-06-22 11:24:07 1488

原创 CRC校验原理和程序

1、简介CRC校验是一种在数据通信系统和其它串行传输系统中广泛使用的错误检测手段。通用的CRC标准有CRC-8、CRC-16、CRC-32、CRC-CCIT,其中在网络通信系统中应用最广泛的是CRC-32标准。特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。2、原理2.1 模2运算法则在CRC运算过程中会使用到模2除法运算。模2运算是一种二进制运算法

2021-06-20 20:55:11 2561 2

原创 IC验证分类和作用

参考数字IC前端设计流程及工具【RTL设计+功能仿真】【综合】【DFT】【形式验证】【STA静态时序分析】前端和后端的区分:以门级网表(Netlist)生成为分界线,之前称为前端,之后称为后端。布局布线之前可以认为是前端,布局布线到流片是后端。Synthesis:综合,主要任务是将 RTL 代码 转成 门级网表;典型的网表文件由单元(Cell)、引脚(Pin)、端口(Port)、网络(Net)组成。功能仿真:验证 RTL 代码设计的功能正确性,没有加入延时信息,又叫前仿真,工具有 Ment

2021-06-16 10:47:19 1299

原创 fpga面积优化

1、折叠流水线2、串行化3、资源复用如要求很多个计数,可以在顶层文件设计一个计数程序,一起用。4、尽量少用置位复位,这样置位复位引脚可以连接一些选通信号节省资源。

2021-06-15 16:46:36 430

原创 FPGA速度优化

1、高流量拆开环路就是将反馈拆开。2、低时滞去除触发器(并不是有效的提速方法,不够可以在非关键路径加)3、时序缩短关键路径(1)并行化(2)流水线(3)寄存器平衡,将关键路径的组合逻辑移动到相邻路径(4)添加触发器,将关键路径分成小块。(5)展平逻辑(消除优先级)少使用if else和case...

2021-06-15 16:29:44 797

原创 跨时钟域处理

单比特单bit异步处理–电平同步、边沿同步、脉冲同步、握手信号多比特深入理解FIFO以及同步FIFO和异步FIFO的verilog实现代码

2021-06-15 15:19:46 113

原创 单bit异步处理--电平同步、边沿同步、脉冲同步、握手信号

参考文章单bit信号跨时钟域你真的懂2-flop synchronizer吗-- CDC的那些事(2)常见数电面试题Pulse Synchronizer – CDC的那些事(3)电平同步(level synchronization)打两拍`timescale 1ns / 1psmodule level_syn(input clk1,input clk2,input rst_n,input in_data,output reg out_data );reg in_data

2021-06-12 16:10:48 3698 2

原创 ==和===区别

题目:a=4'b01x1 b=a'b01x1;问:a == b 和 a === b等于多少答案:x,1分析:"=="是逻辑等,数值确定时,相等返回1,不相等为0,如果含有x(未知状态),输出x"==="是实例等,就算包含x和z,只要状态一样就是1.`timescale 1ns / 1psmodule ttt;reg clk=0;reg [3:0] a=4'b01x0;reg [3:0] b=4'b01x0;wire c,d;assign c=a==b;assign

2021-06-11 11:24:21 118 1

原创 $display用法针对阻塞和非阻塞语句(22乐鑫题)

题目:always@(posedge clk)begina=0;a<=1;$display("%0b",a);end 问题:输出多少;答案是0;解题:分析1:`timescale 1ns / 1psmodule ttt;reg clk=0;reg a=0;reg b=1;always@(posedge clk)begina<=1;$display("%t %0b",$time,a);end always@(posedge clk)beginb=

2021-06-11 11:10:49 483 3

转载 systemverilog中automatic与static

再谈systemverilog中automatic与static

2021-06-09 16:14:27 824

原创 systemverilog数组的定义和初始化

数组定义//*************1维数组*****************//int a[2];//2个数据的1维数组等于:int [1:0] a;int a[1:0];//**************2维数组****************//int b[2][3];//2*3的2维数组等于:int b[1:0][2:0];int [2:0][1:0] b;数组初始化//*************1维数组*****************//int a[2];//2个数据

2021-06-04 16:47:37 2998

原创 foreach用法

int md[2][3];foreach(md[i,j])beginend功能和int md[2][3];for(int i=0;i<=2;i++)for(int j=0;j<=3;j++)beginend例子:`timescale 1ns/1ps;module tt;bit clk;int md[2][3];initial begin foreach(md[i,j]) begin md[i][j]=i+j; $display("%0d,%0d,%0d

2021-06-04 16:29:30 2905

原创 vs code画流程图,贼好用

1、安装draw.io Integration2、文件->新建文件->保存(文件名为**.drawio),然后画图具体画图自己学很简单。3、文件导出(export),选择.png就行。

2021-05-30 20:16:11 2373

原创 DFT可测性设计

DFT 常用技术:(1)扫描链(Scan Chain),主要针对时序电路,测试寄存器和组合逻辑;(2)BIST,内建自测试逻辑(Bulit-in Self Test),主要针对 ROM 和 RAM 等存储器;(3)边界扫描(Bounary Scan),主要针对输入输出引脚,比如使用 JTAG 技术;功能:1、覆盖电路时序问题扫描链(Scan Chain),主要针对时序电路,测试寄存器和组合逻辑;DC Scan是慢速测试,AcScanf全速测试,使用高于芯片的工作频率时钟,测试setuo和hol

2021-05-30 11:07:07 1973

原创 时钟偏移(skew)和时钟抖动(jitter)以及clock uncertainty

抖动是时钟抖动,时钟边沿来的早或者晚偏移是路径不同,到达不同d触发器的时间不一致时钟抖动(Clock Jitter):指芯片的某一个给定点上时钟周期发生暂时性变化,使得时钟周期在不同的周期上可能加长或缩短。时钟偏移(Clock Skew):是由于布线长度及负载不同引起的,导致同一个时钟信号到达相邻两个时序 单元的时间不一致。区别:Jitter是在时钟发生器内部产生的,和晶振或者PLL内部电路有关,布线对其没有影响。Skew是由不同布线长度导致的不同路径的时钟上升沿到来的延时不同。clock un.

2021-05-30 10:50:55 15663 4

原创 FPGA动态功耗和静态功耗

静态功耗静态功耗主要包括漏电流产生的功耗,很大程度上跟管子的参数有关。Ps = Is* VDD 静态功耗 = 静态工作电流 * 工作电压;静态功耗两个主要因素:漏电流,工作电压其中漏电流与工艺有关,随着工艺升级,晶体管阈值降低,漏电流变大,静态功耗变大。动态功耗动态功耗包括翻转功耗,给负载电容充放电产生的功耗。Pd =VDD * C * F与工作电压、工作频率、工作的负载电容有关。...

2021-05-28 21:05:57 4296

原创 串行化

串行化:将原来耗用资源巨大、单周期内完成的并行执行逻辑块分割,提取出相同的逻辑块,再时间上利用该逻辑块,用多个时钟周期完成相同的功能。面积换速度。如要完成out=a0b0+a1b1+a2b2+a3b3;正常写法和并行写法看文章fpga的流水线设计(Pipeline Design)、并行处理串行化...

2021-05-25 10:11:17 203

原创 fpga的流水线设计(Pipeline Design)、并行处理

流水线含义如1个器件加工需要三个步骤,1个人干,需要时间时间是t1+t2+t3;如果是流水线,将任务变成三个小模块,三个人每人负责一个模块,完成一个器件的时间就等于max(t1,t2,t3),效率就高了。目的速度换面积,提高运行速度。实现方法1、组合逻辑插入触发器,模块变小如要完成out=a0b0+a1b1+a2b2+a3b3;1)直接写程序:module head(input clk,input rst_n,input [7:0] a0,a1,a2,a3,input [7:0]

2021-05-24 20:21:48 4213

原创 fpga速度(流量、时滞、时序)

流量:每个时钟周期,数据的处理量时滞:输入到输出的延时时序:时序元件之间的延时。一般说不满足时序说的就是关键路径(最大时序延时)大于一个时钟周期。例如:out=a0b0+a1b1+a2b2+a3b3;module head(input clk,input rst_n,input [7:0] a0,a1,a2,a3,input [7:0] b0,b1,b2,b3,output reg [15:0] out);always@(posedge clk or negedge rst_n)b

2021-05-24 17:04:16 1341

原创 ROM、RAM

来自:FPGA探索者公众号(1)ROM(Read-Only Memory,只读存储器)只能读出无法写入信息。信息一旦写入后就固定下来,即使切断电源,信息也不会丢失,所以又称为固定存储器。ROM所存数据通常是装入整机前写入的,整机工作过程中只能读出。可编程只读存储器(PROM);可擦可编程序只读存储器(EPROM);带电可擦可编程只读存储器(EEPROM,一般使用 IIC 接口读写)。(2)RAM(Random Access Memory,随机存取存储器),而且速度很快,RAM在计算机和数字系统中用

2021-05-24 11:12:12 342

原创 无损定点化,fpga数据定点化误差

无损量化:量化误差小于量化精度的一半。如:13.448整数13,需要4位量化小数部分一直乘2,直到第一位小数小于5,满足条件,因为第一位小数小于5就说明量化误差小于精度的一半。量化精度位1/2^N,N位小数部分量化位数。1、两位量化0.448*4=1.792。两个的量化精度为1/4=0.25;误差为0.792/4=0.198;0.198/0.25=0.796》0.5,所以两位量化小数不行。2、三位量化1.792*2= 3.5843、四位量化3.584*2=7.168四个的量化精度

2021-05-24 10:17:05 2540 4

原创 常用的时序检查语句

(1)setup 建立时间检查$setup(data, posedge clk, tSU);(2)hold 保持时间检查$hold(posedge clk, data, tHLD);(3)setuphold 建立/保持时间检查$setuphold(posedge clk, data, tSU, tHLD);(4)width 脉冲宽度检查$width(posedge clk, 4);(5)skew 时钟歪斜检查$skew(posedge clk1, posedge clk2, 4);(6)

2021-05-23 20:54:33 2134

原创 fork...join 和 begin...end

fork…join 并行执行begin…end顺序执行reg A;reg B;initial begin fork begin A = 1; #20 A = 0; #30 A = 1; #50 A = 0; end begin B = 1; #20 B = 0; #30 B =

2021-05-23 15:27:29 860

原创 相位延时、相位延迟、群延时

注意:相位延时、相位延迟不一样。很多文章把两个混淆了,让我看了半天。首先:要明白bode图的含义相位延迟也就是伯德图的相频特性表示的相位延迟。如:积分环节每个频率的相位延迟都是-90°。(注意:-90°表示相位滞后90°,是输出相对输入)相位延时所以相位延时等于相位延迟除以角速率。相位延时一般表示一个频率的延迟时间。还是以积分为例子,相位延迟为-90°,也就是相位滞后90°,相位延时等于90/w,对于不同的频率,相位延时不一样。比如频率10HZ,延时了9s,20HZ延时了4.

2021-05-23 14:46:35 16870 4

原创 fir ip核使用

1、首先利用matlab产生系数注:里面大部分字母(如:FP)都是设置里面的简称1)进入matlab,输入fdatool2)设置fir1、左侧第三个界面FA设置为fix(浮点型)2、FP设置为specify all3、点击apply1)FIR设置window2)order阶数设置为160或者其他3)window选用Gaussian4)fa采样频率(不是系统时钟)5)fc截止频率6)designfilter7)点击tergets,生成coe文件2、FIR IP核产生1)S

2021-05-21 20:40:57 2621 1

原创 (直接型、转置型、脉动型、线性相位、MAC型、DA fir)fir设计方案

FIR(Finite Impulse Response)Filter:有限冲激响应滤波器,又称为非递归线性滤波器,与IIR对应。FIR滤波器,其脉冲响应由有限个采样值构成。长度(抽头数)为N、阶数为N−1的FIR系统的差分方程:直接型fir设计优点可以具备线性相位特性:所有频率的相位延迟一样易于设计并行算法1.转置型fir设计:先乘后加2. 脉动型fir设计3. 优化(线性相位):系数首尾对称,可以减少乘法器数量具体解释看转置型FIR滤波器的fpga实现串行算法单乘

2021-05-21 18:31:01 1267 1

转载 各种时间的含义(建立、保持、时钟偏移、时钟抖动、恢复时间、移除时间、输出延时、组合逻辑延时)

静态时序分析基础及其与非阻塞赋值的关系

2021-05-21 15:02:00 1214

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除