fpga理论
宇哥啊
这个作者很懒,什么都没留下…
展开
-
同步复位和异步复位
同步复位:同步复位就是指复位信号只有在时钟上升沿到来时,才能有效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 · 1088 阅读 · 0 评论 -
同步时序和异步时序的区别
同步时序逻辑:时钟之间有固定的因果关系,只有一个时钟源,各触发器的时钟端连接在一起异步时序逻辑:各时钟之间没有固定的因果关系,不是一个时钟源,电路除了使用带时钟的触发器外,还使用了不带时钟的触发器和延迟元件。...原创 2021-07-15 16:38:08 · 4989 阅读 · 0 评论 -
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 · 1079 阅读 · 0 评论 -
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 · 712 阅读 · 0 评论 -
与或非门输入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 · 1577 阅读 · 0 评论 -
IC验证分类和作用
参考数字IC前端设计流程及工具【RTL设计+功能仿真】【综合】【DFT】【形式验证】【STA静态时序分析】前端和后端的区分:以门级网表(Netlist)生成为分界线,之前称为前端,之后称为后端。布局布线之前可以认为是前端,布局布线到流片是后端。Synthesis:综合,主要任务是将 RTL 代码 转成 门级网表;典型的网表文件由单元(Cell)、引脚(Pin)、端口(Port)、网络(Net)组成。功能仿真:验证 RTL 代码设计的功能正确性,没有加入延时信息,又叫前仿真,工具有 Ment原创 2021-06-16 10:47:19 · 1469 阅读 · 0 评论 -
fpga面积优化
1、折叠流水线2、串行化3、资源复用如要求很多个计数,可以在顶层文件设计一个计数程序,一起用。4、尽量少用置位复位,这样置位复位引脚可以连接一些选通信号节省资源。原创 2021-06-15 16:46:36 · 503 阅读 · 0 评论 -
FPGA速度优化
1、高流量拆开环路就是将反馈拆开。2、低时滞去除触发器(并不是有效的提速方法,不够可以在非关键路径加)3、时序缩短关键路径(1)并行化(2)流水线(3)寄存器平衡,将关键路径的组合逻辑移动到相邻路径(4)添加触发器,将关键路径分成小块。(5)展平逻辑(消除优先级)少使用if else和case...原创 2021-06-15 16:29:44 · 907 阅读 · 0 评论 -
跨时钟域处理
单比特单bit异步处理–电平同步、边沿同步、脉冲同步、握手信号多比特深入理解FIFO以及同步FIFO和异步FIFO的verilog实现代码原创 2021-06-15 15:19:46 · 131 阅读 · 0 评论 -
==和===区别
题目: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 · 134 阅读 · 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 · 508 阅读 · 3 评论 -
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 · 2083 阅读 · 0 评论 -
时钟偏移(skew)和时钟抖动(jitter)以及clock uncertainty
抖动是时钟抖动,时钟边沿来的早或者晚偏移是路径不同,到达不同d触发器的时间不一致时钟抖动(Clock Jitter):指芯片的某一个给定点上时钟周期发生暂时性变化,使得时钟周期在不同的周期上可能加长或缩短。时钟偏移(Clock Skew):是由于布线长度及负载不同引起的,导致同一个时钟信号到达相邻两个时序 单元的时间不一致。区别:Jitter是在时钟发生器内部产生的,和晶振或者PLL内部电路有关,布线对其没有影响。Skew是由不同布线长度导致的不同路径的时钟上升沿到来的延时不同。clock un.原创 2021-05-30 10:50:55 · 18117 阅读 · 4 评论 -
FPGA动态功耗和静态功耗
静态功耗静态功耗主要包括漏电流产生的功耗,很大程度上跟管子的参数有关。Ps = Is* VDD 静态功耗 = 静态工作电流 * 工作电压;静态功耗两个主要因素:漏电流,工作电压其中漏电流与工艺有关,随着工艺升级,晶体管阈值降低,漏电流变大,静态功耗变大。动态功耗动态功耗包括翻转功耗,给负载电容充放电产生的功耗。Pd =VDD * C * F与工作电压、工作频率、工作的负载电容有关。...原创 2021-05-28 21:05:57 · 4517 阅读 · 0 评论 -
串行化
串行化:将原来耗用资源巨大、单周期内完成的并行执行逻辑块分割,提取出相同的逻辑块,再时间上利用该逻辑块,用多个时钟周期完成相同的功能。面积换速度。如要完成out=a0b0+a1b1+a2b2+a3b3;正常写法和并行写法看文章fpga的流水线设计(Pipeline Design)、并行处理串行化...原创 2021-05-25 10:11:17 · 225 阅读 · 0 评论 -
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 · 4763 阅读 · 0 评论 -
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 · 1416 阅读 · 0 评论 -
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 · 409 阅读 · 0 评论 -
无损定点化,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 · 2841 阅读 · 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 · 2589 阅读 · 0 评论 -
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 · 911 阅读 · 0 评论 -
相位延时、相位延迟、群延时
注意:相位延时、相位延迟不一样。很多文章把两个混淆了,让我看了半天。首先:要明白bode图的含义相位延迟也就是伯德图的相频特性表示的相位延迟。如:积分环节每个频率的相位延迟都是-90°。(注意:-90°表示相位滞后90°,是输出相对输入)相位延时所以相位延时等于相位延迟除以角速率。相位延时一般表示一个频率的延迟时间。还是以积分为例子,相位延迟为-90°,也就是相位滞后90°,相位延时等于90/w,对于不同的频率,相位延时不一样。比如频率10HZ,延时了9s,20HZ延时了4.原创 2021-05-23 14:46:35 · 18085 阅读 · 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 · 2701 阅读 · 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 · 1362 阅读 · 1 评论 -
各种时间的含义(建立、保持、时钟偏移、时钟抖动、恢复时间、移除时间、输出延时、组合逻辑延时)
静态时序分析基础及其与非阻塞赋值的关系转载 2021-05-21 15:02:00 · 1251 阅读 · 0 评论 -
FIFO最小深度计算
注意:fifo最小深度计算,如果写入比读出快,默认写完突发长度后,间隔一定时间,读取未读取的数据。FIFO最小深度计算最坏情况,就是使得写速率最大,读速率最小;通常是考虑猝发传输。写时钟频率w_clk,读时钟频率 r_clk,写时钟周期里,每B个时钟周期会有A个数据写入FIFO读时钟周期里,每Y个时钟周期会有X个数据读出FIFO最坏的情况就是每个周期写入一个数据,这是写入最快的。计算方法1fifo_depth = burst_length - burst_length * X/Y * r_c原创 2021-05-19 21:20:08 · 1314 阅读 · 0 评论