数字IC基础
文章平均质量分 53
数字IC基础与进阶
CLL_caicai
数字IC
展开
-
十进制小数定点化
1、题目 在FPGA中做小数乘法时,一般需要对定点小数量化处理。量化过程中首先需要确定量化的位宽,位宽越大量化的精度越高。如题所述,对12.918做无损定点化,首先需要确定对整数部分的量化位数。整数为12,无损量化必须采用4bit;小数部分为0.918,假如采用12bit位宽,整数部分4bit,那么小数部分只有8bit。8bit所能表达的最大的整数为255(注意,定点小数在FPGA运算过程中是没有小数点的,比如12.918,实际存储的是12.918的二进制形式,所以8bit表示小数部分最大为原创 2020-08-25 22:26:05 · 2176 阅读 · 0 评论 -
反码、原码和补码的引入与转换
参考链接中对原码、反码补码的来由与相互之间的转换进行了详细讲解,精彩至极!笔者此处只是记录了一些自己的笔记便于日后翻阅理解(红色字体部分);目录一、原文(一)预备知识(二)原码(三)反码(四)补码(五)补码的思想(六)补码实例(七)为何这样求补码二、补充与注释三、原文地址一、原文本文从原码讲起。通过简述原码,反码和补码存在的作用,加深对补码的认识。力争让你对补码的概念不再局限于:负数的补码等于反码加一。接触过计算机或电子信息相关课程的同学,应该都或多或原创 2020-07-24 23:22:08 · 700 阅读 · 0 评论 -
Vivado中FFT9.1 IP核的使用(4)——SCALE_SCH缩放设置
在Vivado中FFT9.1 IP核的使用(3)——线性调频信号FFT的基础上,对SCALE_SCH进行测试1、SCALE_SCH介绍SCALE_SCH对FFT过程的缩放进行设置:SCALE_SCH对FFT变换各阶段的缩放进行设置,长度与FFT方式和变换长度有关,比如基2FFT,1024点,对应阶段数为10; 每阶段使用两位进行设置,可以设置为0-1-2-3,对应移位位数,反映在缩放倍数上实际为:0-2-4-8倍; SCALE_SCH从高到低,分别对应FFT最后阶段到初始阶段;2、仿真原创 2020-07-06 16:58:33 · 5188 阅读 · 3 评论 -
DRAM的三种刷新方式的刷新周期问题
定时刷新的原因:由于存储单元的访问是随机的,有可能某些存储单元长期得不到访问,不进行存储器的读/写操作,其存储单元内的原信息将会慢慢消失,为此,必须采用定时刷新的方法,它规定在一定的时间内,对动态RAM的全部基本单元电路必作一次刷新,一般取2ms,即刷新周期(再生周期)。刷新与行地址有关。刷新时一行行进行的,必须在刷新周期内,由专用的刷新电路来完成对基本单元电路的逐行刷新,才能保证DRAM内的信息不丢失。通常有三种方...转载 2020-06-18 23:16:10 · 9042 阅读 · 2 评论 -
使用IP核例化ROM并初始化
1、使用IP核例化ROM可以选择使用Block RAM实现还是使用Distributed RAM实现:使用Distributed RAM实现时,占用LUT资源,仿真如下:使用Block RAM实现时占用专用RAM资源:Distributed RAM使用灵活,但是占用LUT资源,常用于数据量较小的场合;Block RAM是专用RAM资源,常用于数据量较大的场合;bram 的输出需要时钟,dram在给出地址后既可输出数据。 dram使用根灵活方便些 bram有较大的存储空间,..原创 2020-07-06 15:39:13 · 3841 阅读 · 1 评论 -
Verilog基础 门级建模
与门(and)和或门(or):与门、或门都有一个标量输出端和多个标量输入端。门的端口列表中的第一个端口必是输出端口,其后为输入端口。当任意一个输入端口的值发生变化时,输出端的值立即重新计算。verilog中可以使用的属于与/或门类的术语包括:and nand or nor xor xnor例:与门/或门的实例引用wire OUT,IN1,IN2;and a1(...转载 2020-06-21 11:25:27 · 1467 阅读 · 0 评论 -
DCM、PLL以及DLL等概念及详情
介绍DLL、PLL以及DCM的概念,总结其模块构成、工作原理、相互之间的差异与各自优势。原创 2020-03-20 09:34:15 · 7482 阅读 · 0 评论 -
亚稳态相关:三种复位方式详解---同步复位/异步复位/异步复位同步释放
对常见三种复位方式(同步复位、异步复位、异步复位同步释放)进行介绍与分析,详细介绍了各种复位方式的优缺点,并进一步分析了异步复位同步释放的工作机理与优势所在。原创 2020-03-20 12:20:23 · 5620 阅读 · 0 评论 -
//synophys parallel_case和//synophys full_case
//synophys parallel_case和//synophys full_case是综合指令,用来控制综合器把case语句综合成什么硬件逻辑。1、//synophys parallel_caseeg:case (CASE_SIGNAL) begin CASE1: A = B; CASE2: A = C; default: A = D; endendcase在这个case语句中,如果没有//synophys p.原创 2020-06-30 20:12:19 · 460 阅读 · 0 评论 -
静态时序分析STA公式推导以及本质分析(基础概念、多角度公式推导、本质分析)
静态时序分析STA对于同步时序电路必不可少,相关的文章不少但相互之间很多不太统一;本文参考众多分析,记录了一个最“全”的统一版本;介绍了一些基础概念以及STA公式,并多角度进行了公式推导与本质分析原创 2020-02-29 23:31:23 · 5533 阅读 · 5 评论 -
Verilog中Parameter用法-常量定义与参数传递(例化传递、defparam传递)
Verilog中用parameter来定义常量,即用parameter来定义一个标识符来代表一个常量,称为符号常量,即标识符形式的常量,采用标识符代表一个常量可以提高程序的可读性和可维护性。另一个很有用的用途就是可以利用defparam或者在模块实例化的时候进行参数传递(即重写)一、parameter声明常量 parameter定义常量,可以定义在模块内部或外部;常用于定义...原创 2020-02-22 14:37:49 · 89127 阅读 · 10 评论 -
单端口RAM、伪双端口RAM、双端口RAM、以及FIFO的区别
FPGA设计中,存储器是必不可少的。FPGA中常见的存储器件有RAM以及FIFO,RAM又可细分为单端口RAM、伪双端口RAM和双端口RAM。现重点将其进行比较,讨论其异同、联系、以及应用场合原创 2020-03-04 12:22:05 · 10240 阅读 · 0 评论 -
Verilog实现FIFO专题5-异步FIFO设计(异步FIFO工作方式、异步FIFO介绍、异步FIFO介绍)
FIFO根据输入输出时钟是否一致,分为同步FIFO与异步FIFO。本文以异步FIFO与同步FIFO的异同入手,在比较过程中逐步对异步FIFO进行分析,介绍异步FIFO相比于同步FIFO的额外处理,最终实现异步FIFO,并进行了仿真、调试、以及验证原创 2020-03-25 09:57:31 · 5549 阅读 · 8 评论 -
Verilog中常见文件操作($readmemb,$fopen,$fwrite,$fclose)
目录一、$readmemb/$readmemh二、$fopen,$fwrite,$fclose三、仿真验证四、参考一、$readmemb/$readmemh$readmemb和$readmemh用来从文件中读取数据到存储器中。读取的内容只包括:空白位置(空格、换行、制表格(tab和form-feeds),注释行、二进制或十六进制的数字。数字中不能包含位宽说明和格式说明,其中readmemb要求每个数字是二进制数,readmemh要求每个数字必须是十六进制数字。数字中不定值x.原创 2020-06-23 18:02:29 · 29683 阅读 · 8 评论 -
3.2数据类型与常量和变量
目录1、常量1.1 数字1.2 参数2、变量2.1 wire形2.2 reg形2.3 memory形1、常量1.1 数字常见进制: 二进制:b/B 十进制:d/D 八进制:o/O十六进制:h/H整数表示 位宽+进制+数字:4`b1010 进制+数字(系统默认位宽):ha//10的16进制 数字(系统默认位宽,10进制):10x与z...原创 2021-07-11 16:33:00 · 684 阅读 · 0 评论 -
Verilog中“==”和“===”的区别
“===”和“==”不同体现在对含有不定制X和高阻态Z数据的处理中:先说结论:==为逻辑相等,没有x/z时相同输出1,不同输出0;有x/z时,若其余位相同,输出是x,其余位不同,输出为0; !=为逻辑不等,没有x/z时相同输出0,不同输出1;有x/z时,若其余位相同,输出是x,其余位不同,输出为1; ===与!===为逻辑全等和逻辑不全等,x/z当作普通元素处理。本质:===与!==将x/z按照普通元素看待,进行比较;==不能识别x/z,其余位相同时,因为存在x/z位无法判断比较结果,原创 2020-08-25 09:23:04 · 10791 阅读 · 0 评论 -
Verilog中Case语句
case原创 2020-06-22 09:59:50 · 72594 阅读 · 6 评论 -
Verilog实现RAM(1)
学习FIFO设计时遇到了RAM设计的知识,因此首先对RAM相关知识进行学习与记录一、概念解释基础概念不清,所以查阅了一些大神的博客与资料,先进行扫盲,基本照搬如下:ROM:只读存储器 ROM内部的数据是在ROM的制造工序中,在工厂里用特殊的方法被烧录进去的,其中的内容只能读不能改,一旦烧录进去,用户只能验证写入的资料是否正确,不能再作任何修改。如果发现资料有任何错误,则只有舍弃...原创 2020-02-20 18:33:42 · 12985 阅读 · 0 评论 -
Verilog实现RAM(2-单端口同步读写SRAM)
之前在Verilog实现RAM(1)中,对常见存储器件进行了名词扫盲,并通过调用IP核实现了简单的同步读写SRAM;现在接着之前的工作,对同步读写SRAM进行Verilog描述----实现一个位宽8bit,深度16bit的单端口SRAM;一、原理输入端口有: reg [3:0]a;//输入地址(RAM深度为16,对应地址位宽为4) reg clk;//时钟 reg...原创 2020-02-23 17:41:50 · 11555 阅读 · 4 评论 -
Verilog实现RAM(3-单端口同步写、异步读SRAM)
在之前的工作中,我们对常见存储器件进行了名词扫盲,并通过调用IP核实现了简单的同步读写SRAM;并进一步对同步读写SRAM进行了Verilog描述----实现一个位宽8bit,深度16bit的单端口SRAM;这部分工作见:Verilog实现RAM(1)Verilog实现RAM(2-单端口同步读写SRAM)现在在之前工作的基础上,进一步实现单端口同步写,异步读SRAM一、原理与...原创 2020-02-24 12:58:27 · 4338 阅读 · 0 评论 -
FPGA/DSP编程思想---乒乓操作
乒乓操作是DSP以及FPGA中一种常见的处理方式,多用于数据流控制的场合。本文从实际例子出发,介绍了乒乓操作的思想,分析了乒乓操作带来的优势。问题:SAR实时处理系统的一个常见情况就是,数据接收模块录取雷达回波,数据处理模块对存储下来的数据进行处理(各种时频域成像算法)实现成像,成像的结果同样需要传输给输出模块。这就出现一个问题,我们一定希望回波的录取和处理是同时进行的,而不是二者只能交替工作...原创 2020-03-16 17:42:05 · 1724 阅读 · 2 评论 -
环形、扭环、LFSR计数器
目录环形计数器扭环计数器线性反馈移位寄存器从这个题目来谈起今天的话题:移位寄存器由8级触发器构成,则构成的扭环计数器有多少个有效状态?环形计数器?线性反馈移位寄存器?环形计数器规则:环形计算器的规则是利用一个移位寄存器右移实现,N位的环形计数器能计数的个数为N;也就是说,有N个有效的状态;如开头所说的题目,8级移位寄存器...转载 2020-06-22 10:26:33 · 8924 阅读 · 0 评论 -
Verilog中端口应该设置为wire形还是reg形
初学Verilog时,一直搞不清Verilog描述模块时端口应该取什么类型;是reg形?还是wire形?模块对应测试文件的端口类型为什么又与模块的端口类型不一样?因此有必要进行学习与整理:先写结论:verilog中的端口具有三种传输方向:input、output、和inout,所有的端口均默认为wire类型;模块描述时,input端口只能为线网形,output端口可以为线网/reg,i...原创 2020-02-23 13:04:29 · 13735 阅读 · 3 评论 -
vivado报错 syntax error、dout is an unknown type
代码如下:错误提示如下:出错原因: 原查错思路:1、变量名拼写出错2、中文字符导致报错实际问题:赋值语句必须在过程块中,比如always块!就是组合逻辑也一样,而上述代码就是忘记了在always块中给变量赋值,导致错误;...原创 2020-03-21 12:05:33 · 12621 阅读 · 0 评论 -
Verilog实现FIFO专题(1-FIFO基础:简介/应用/分类/参数等)
27,FIFO专题:【1】简介: FIFO(First In First Out),是一种先进先出的数据缓存器,它与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。【2】应用:*异步时钟数据传输:*不同宽度数据匹配:【3】分...原创 2020-02-26 11:24:42 · 1788 阅读 · 0 评论 -
Verilog中三态门(高阻态)的理解与例子
以前只知道电路的输出有高阻态,但是对高阻态的理解不够,对高阻态的用法也不清楚,直到用Verilog实现单端口SRAM时,才有了一个进一步的认识,记录如下;Verilog实现单端口SRAM的内容见:Verilog实现RAM(2-单端口同步读写SRAM) 此处不再赘述一、百度百科概念照搬高阻态是一个数字电路里常见的术语,指的是电路的一种输出状态,既不是高电平也不是低电平,如果高阻态再输入...原创 2020-02-23 19:22:27 · 25444 阅读 · 0 评论 -
Verilog实现二进制码与格雷码转换
格雷码是一种常见的编码方式,相邻状态间只有一位不同;这就意味着相邻两个状态间进行转换时,只有一位发生变化,因而极大的减小了出错几率。(反之,如果使用二进制编码,如011->100时三位均发生改变,因此出错的机率就会大大增加)。格雷码以及其余常见编码的知识详见:Verilog常见编码方式:二进制码、格雷码、独热码如上所述,格雷码作为一种错误最小化的编码方式,常用于状态机等多种场合。二进...原创 2020-03-17 20:52:56 · 4503 阅读 · 0 评论 -
常见Verilog运算符(逻辑运算符、按位运算符、缩位运算符、迭代连接运算符、移位运算符)
Verilog逻辑运算符与按位运算符:区别:按位运算符进行逐位的逻辑运算(如:与或非),输出与输入位数一致; 逻辑运算符进行逻辑运算,不关注输入的某一位而是将输入作为整体进行逻辑操作,输出位数为1;列举: 与:& 按位与;&& 逻辑与; 或:| 按位或;|| 逻辑或; 非:~ 按位非;!...原创 2020-02-19 12:52:05 · 25931 阅读 · 0 评论 -
异步FIFO代码分析
module Asyn_FIFO(data_out, full, empty, data_in, wen, wclk, wrst,ren, rclk, rrst);parameter datasize = 8; parameter addrsize = 4;input [datasize-1:0]data_in;input wen,ren,wclk,rclk,wrst,rrst;output [datasize-1:0]data_out;output empty,full;reg emp.原创 2020-10-12 11:26:12 · 364 阅读 · 0 评论 -
逻辑代数常用公式及其推导
一、基本公式1、变量与常量运算规则:0*A = 0 0+A = A 1*A = A 1+A = 1 2、重叠率:A*A = A A+A = A 3、互补率:A*A' = 0 A+A' = 1 4、交换率、结合律 、以及分配律A*B = B*A A+B = B+A A*(B*C) = (A*B)*C A+(B+C) = (A+B)+C A*(B+C) = A*B+A*C A+B*C = (A+B)*(A+C) 5、反演律原创 2020-07-27 22:31:03 · 24108 阅读 · 1 评论 -
流水线设计实例——8位全加器设计
目录1、简介2、实例3、部分代码4、参考1、简介系统的最高工作频率,取决于系统中耗时最长的模块延时。模块延时越长,系统的工作频率就越低,反之则越高。流水操作的思想就是将耗时较长的模块拆分为多个子模块的级联,子模块之间通过寄存器连接。这种设计方式带来的好处是显而易见的:流水处理之前,每一次操作所需时间均为A,较大的模块延迟导致系统工作频率下降。 流水处理之后,模块被划分为N个子模块的级联,子模块的操作延迟为B(B<A)。此时,除刚开始输入数据时需要延迟B*N才能得.原创 2020-07-07 17:00:22 · 3336 阅读 · 0 评论 -
模块输出不定态X(高阻态Z)
问题:调用复乘IP核计算复数乘法,IP核m_axis_dout_tdata输出正常数据,但是将IP输出划分,分别赋值给实部o_real以及虚部o_imag输出时,实部出现X,虚部出现Z;原因:模块例化时m_axis_dout_tdata的实部虚部均赋值给实部o_real,对应的虚部o_imag未被赋值;赋值冲突出现X 未赋值以及初始化可能出现Z...原创 2020-07-07 09:20:07 · 3478 阅读 · 0 评论 -
数字电路基础知识—— 组合逻辑电路中的竞争与冒险(竞争与冒险、检验方法、及消除方法)
在数字逻辑设计中,并不是说最简的逻辑表达式在设计组合逻辑时一定是最优的,可能就会出现本次介绍的竞争与冒险问题,所以需要了解竞争与冒险的检验以及竞争与冒险的避免消除方法。一、竞争与冒险现象及其形成原因两个输入信号同时向相反方向的逻辑电平跳变的现象(即一个由1- > 0, 另一个从0 -> 1),称为竞争。因竞争导致在输出端可能产生尖峰脉冲的现象,称为冒险。通俗一点的说,信号由于经由不同路径传输达到某一汇合点的时间有先有后的现象,就称之为竞争,由于竞争现象所引起的电路输出发生瞬间错误的转载 2020-08-25 17:59:19 · 48873 阅读 · 1 评论 -
亚稳态专题(亚稳态的概念、亚稳态的产生、亚稳态的后果、以及如何避免亚稳态)
亚稳态是FPGA系统中的一个常见问题,亚稳态的出现轻则导致输出错误,严重的甚至会导致系统崩溃。因此对亚稳态的了解必不可少,本文在查阅众多资料的基础上,对亚稳态的概念、亚稳态的产生原因、以及如何避免亚稳态进行了分析与记录。原创 2020-03-23 13:13:24 · 24729 阅读 · 13 评论 -
Verilog有哪些运算符及其优先级
目录1、算术运算符2、关系运算符3、逻辑运算符4、条件运算符5、位运算符6、移位运算符7、拼接运算符8、运算符的优先级Verilog中的运算符按照功能可以分为下述类型:1、算术运算符、 2、关系运算符、 3、逻辑运算符、 4、条件运算符、 5、位运算符、 6、移位运算符、 7、拼接运算符。1、算术运算符算术运算符,简单来说,就是数学运算里面的加减乘除,数字逻辑处理有时候也需要进行数字运算,所以需要算术运算符。符号 使用方法...转载 2020-08-25 09:38:31 · 7695 阅读 · 0 评论 -
FPGA芯片内两种存储器资源
FPGA芯片内有两种存储器资源:一种叫BLOCK RAM,另一种是由LUT配置成的内部存储器(分布式RAM-Distribute RAM)。BLOCK RAM由一定数量固定大小的存储块构成的。使用BLOCK RAM资源不占用额外的逻辑资源,并且速度快。但是使用的时候消耗的BLOCK RAM资源是其块大小的整数倍。分布式RAM是用逻辑资源搭起来存储资源,非常占用内部资源。...原创 2020-06-24 15:56:12 · 5253 阅读 · 0 评论 -
Verilog实现FIR滤波器
1、FIR滤波器简介不追究FIR滤波器的深层含义,我们只关注如何实现;可以看出,FIR滤波器的本质就是延迟、系数相乘与求和,如下图:2、设计基于以上分析,按照三级流水实现FIR滤波器设计:信号延迟-系数相乘-求和`timescale 1ns / 1psmodule fir(input clk,input rst_n,input [3:0]din,output reg [9:0]dout );// data regreg [3:0]din1;reg [3:.原创 2020-07-02 11:04:34 · 9948 阅读 · 0 评论 -
ISE联合Modelsim仿真失败的解决办法
ISE联合Modelsim仿真失败,显示:ERROR: The path specified in the "Compiled Library Directory" property ("") does not exist.原创 2020-05-18 13:03:40 · 6497 阅读 · 0 评论 -
地址扩展电路设计
题目: 分析:将两片512K的内存拼接为1片1M的内存,本质是地址扩展;低位地址线A0-A18直接连接;高位扩展电路如下:当输入CE=“H”时, 不管 A19=0或1, CE1 和 CE2都为“H”, 即两片512K都不选(与要求CE高不选中一致)当输入CE=“L”时, A19=0时, CE1=0, 选中上半片512K;CE2=1, 下半片不选中A19=1时, CE1=1, 上半片512K不选;CE2=0, 选中下半片512K...原创 2020-10-12 11:26:03 · 409 阅读 · 0 评论 -
CAM内容寻址存储器
CAM是一种特殊的存储器。所谓CAM,即内容寻址存储器。CAM存储器在其每个存储单元都包含了一个内嵌的比较逻辑,写入CAM的数据会和其内部存储的每一个数据进行比较,并返回与端口数据相同的所有内部数据的地址。概括地讲,RAM是一个根据地址读、写数据的存储单元,而CAM和RAM恰恰相反,它返回的是与端口数据内容相匹配的地址。CAM的应用也比较广泛,比如在路由器中的地址交换表,CPU的Cache控制器(Tag阵列)等。 CAM工作原理: ...转载 2020-06-24 16:05:46 · 3204 阅读 · 1 评论