- 博客(69)
- 问答 (1)
- 收藏
- 关注
原创 verilog有符号数的乘法
经常会出现高吞吐的数据处理类型,组合逻辑实现延迟较大,需要用流水线思路.对于低速要求的乘法器,可以简单的使用 * 实现。可变系数乘法实现方式-----基于减性分解。4、补码乘法之 “ 正被乘数 ” 乘以 “ 正乘数 ”5、补码乘法之 “ 负被乘数 ” 乘以 “ 正乘数 ”6、补码乘法之 “ 正被乘数 ” 乘以 “ 负乘数 ”7、补码乘法之 “ 负被乘数 ” 乘以 “ 负乘数 ”2、基于无符号乘法器的原码乘法器。3、基于无符号乘法器的补码乘法器。9、补码乘法之BOOTH乘法器。8、补码乘法之加性分解乘法器。
2025-04-08 13:37:08
454
原创 共同语言
它是一种以数字电路为主的集成芯片,属于可编程器件的一种。指表示十进制数码的4位二进制编码中,每一位都有一定的权值,例如 8421码(自然码)和2421码。比较器:完成两个输入数据大小的比较,输出三个端口( a>b a =b a<b )多路复用器( 多路选择器 )MUX:完成数据通道的复用,节省数据通道的个数。1、随着计算机的普及和可编程芯片的发展,使修改一个数字系统的功能变得简单。异或门( 有一个为1 为 1 ,没有为1或者输入都为 1 为 0 )数字信号如果用函数来表示,是一个离散的函数。
2025-04-06 11:16:26
177
原创 数制——FPGA
in_data /5 约等于 in_data * ( 0.125 + 0.0625 + 0.0156 )与定点数相比,虽然浮点数的表示范围更广,更高精度的实数,然而在FPGA中进行浮点数的运算需要占用成倍的硬件资源。反码:正数的反码表示 与原码表示一致,负数的反码表示 除符号位,其他位全都取反。单精度浮点数的格式: 符号位+指数+尾数 [1] [8] [23] 符号位,指数(E),尾数(M)补码:正数的补码表示 与原码表示一致,负数的补码等于在反码在最低位加1。除法运算:使用移位来实现乘除。
2025-03-27 16:11:14
330
原创 systemverilog过程语句和子程序
verilog中函数和任务很明显的区别是:任务可以消耗时间而函数不可以。函数中不能有 #100 这类的延时语句和 @( posedge clk ) 以及 wait( realy ) 这类阻塞语句。systemverilog从c和c++中引入许多操作符和语句。可以在for中定义循环参数,作用仅限于for中。1、 去除子程序中的begin end。1、 程序的参数的声明。3、 高级的参数类型。2、 参数的方向。
2025-03-25 15:14:17
217
原创 verilog 编译命令
1、 `celldefine 和 `endcelldefine。3、 `define 和 `undef。这两个 命令 用于标记模块为单元模块,他们表示包含模块定义。该命令用于对隐含网表(没有被说明的连线)指定网表类型。`undef用于取消前面定义的 宏。会将所有的编译命令置为默认值。
2025-03-24 15:22:09
269
原创 19 数码管的动态显示
BCD ( Binary coded Decimal ):二进制转十进制,使用四位二进制表示一位十进制数,是一种二进制数字编码形式,用二进制编码十进制代码。根据 权值 的有无 分为 有权码 和 无权码。八段数码管 是一个 “ 8 ” 字型数码管,分为八段,a b c d e f g dp,其中dp为小数点。每一段为一个发光二极管,这样的 8 段称为 段选信号。1、实验目标:让六位数码管 从 0 开始记数,每 0.1s 加 1 ,一直加到999_999,达到999_999之后重新开始从 0 计数。
2025-03-23 22:00:21
199
原创 SystemVerilog 数据类型
32bit的有符号数 integer ,64bit的无符号数 time 或者是 浮点数 real.若干变量可以被一起放在定宽数组里,所有的存储都是静态的,意味着所有变量在tb的时候都是存活的。相比于四状态数据类型(0,1,x,z),SV 引入的双状态数据类型有利于提高仿真器的性能并减少内存。变量可以是单bit或者是多bit的无符号数 reg [7:0] m,verilog有两种基本的数据类型:变量和线网,他们各自都可以有四种取值:0 1 z x;2.1、 定宽数组的声明和初始化。
2025-03-21 13:23:07
572
原创 功能仿真
独立的并行电路:若并行的电路之间是相互独立的,同时开始多件事情和逐个执行是完全一样的。硬件电路运行,只要一上电,就一直运行,但是tb是离散的,所以需要注意实际运行情况和仿真结果的不同。串行模拟并行仿真主要分为两种情况:独立的并行电路 有关联的并行电路。有关联的并行电路运行,需要注意执行的顺序。1.6、 仿真时间与物理时间。1.1、 串行模拟并行思路分析。1.3、 组合逻辑仿真原理。1.4、 时序逻辑仿真原理。
2025-03-11 16:25:29
210
原创 时序分析
英文名 :clock to output period ,是指 时钟有效到达reg开始,端口Q得到D端口的采样时间。建立时间余量 = T(su) - 建立时间要求。建立时间要求指的是 想要寄存器如期的工作,在有效时钟到来之前,数据稳定的时间。建立时间:setup time,它是指有效的边沿信号到来之前,输入端口数据保持稳定的时间。保持时间:hold time ,是指在有效时钟边沿之后,端口数据保持稳定不变的时间。1.2、 保持时间 T(hold)1.1、 建立时间 T(su)
2025-03-10 16:10:29
577
原创 开关级建模
CMOS有pmos和nmos 拼接而成。1.6、 开关中的延迟说明。1.2、 cmos开关。1.1、 mos开关。1.3、 双向开关。1.4、 电源和地。1.5、 阻抗开关。
2025-03-10 09:55:14
203
原创 时序和延时
全连接 :*> ( in 和 out 两两连接 )verilog有三种类型的延迟模型:分布延迟 、 集总延迟 、 路径延迟(pin to pin)可以查阅数据手册直接获得标准组件的引脚到引脚的延迟(路径延迟)。分布延迟是在每个独立元件的基础上进行定义的。集总延迟是在每个独立模块的基础上定义的。2.1、 specify块。1.1、 分布延迟。1.2、 集总延迟。1.3、 路径延迟。
2025-03-08 15:49:18
251
原创 实用建模技术
值变转储文件(Value conversion dump :VCD)是一个ASCLL文件,包含仿真时间,范围与信号的定义以及仿真过程中的信号变化。2. force release: 该结构目前被认为是很糟糕的编码风格,建议禁用。2、 写文件:fdisplay fmonitor fwrite fstrobe。1. assign 和 deassign:该结构目前被认为是很糟糕的编码风格,建议禁用。5、 选通显示:strobe。defparam改写。
2025-03-08 11:47:14
720
原创 任务和函数
任务在本质上是静态的,任务中 所有的 声明项的地址空间是静态分配的,同时并发执行的多个任务共享这些内存,因此,两个任务同时调用结果可能是错误的。为了避免这个问题,需要加。4、没有output或者inout。1、不含有 延迟、时序、控制结构。automatic关键字。这样的任务也被称为 自动任务,每次调用,地址都是动态配置的。2、只有一个返回值。3、至少有一个输入。5、没有非阻塞语句。automatic 关键词。automatic 关键词。
2025-03-08 10:00:51
217
原创 行为级建模
基于延迟的时序控制、基于事件的时序控制、电平敏感的时序控制。->received_data 表示事件的触发。第一种阻塞赋值会产生竞争的情况,a = b b = a 执行的先后取决与仿真器。当 count_enable为 1 的时候执行,为0的时候仿真会不执行后面的语句,会停顿下来。常规事件控制、命名事件控制、or事件控制、电平敏感时序控制。第二种非阻塞赋值避免了竞争,达到了 交换 a b 的效果。2、延迟 是相对于前面那条语句的完成时间。并行块:所有语句一起执行。顺序块:语句按照顺序执行。
2025-03-07 16:34:06
251
原创 数据流建模
RTL(register transfer level):寄存器传输级,是指数据流建模和行为级建模的结合。指定赋值延迟的三种方法:普通赋值延迟 隐式赋值延迟 线网声明延迟。2、连续赋值语句总是处于激活状态,可以立刻执行运算、逻辑综合:借助于计算机辅导的设计工具,自动的将电路的数据流设计转换为门级机构。1、连续赋值语句的 左 值 不能是 reg。如果操作数的一位为 x ,那么运算结构全为 x。4、可以控制对线网赋予新值的时间。连续赋值语句是verilog的基本语句,它等价于门级描述。
2025-03-06 11:12:37
291
原创 门级建模
关断延迟:门的输出 由 0 1 x 变为 z 的时间。上升延迟:门的输入由 0 x z 变为 1 的时间。下降延迟:门的输入由 1 x z 变为 0 的时间。只有在ctrl为 1 时,out 才根据in变化。verilog提供四个带有控制信号的buf/nobuf。多路选择器的门级描述。xor:相异的1,负责为0;
2025-03-05 15:40:38
294
原创 verilog 基本语法结构与定义
verilog描述包含一个 单词流 ,这里 单词 可以是 注释、分隔符、数字、字符串、标识符、关键字。verilog包含两种数字声明,指明位宽的数字 和 不指明位宽的数字。转义标识符 以 \ 开始,以空格(空格,制表符,换行符)结束。操作符 有三种类型:单目操作符,双目操作符,三目操作符。字符串是由 " " 引起来的一个字符队列。关键字是语言中预留的用于定义语言结构的特殊标识符。空白符有空格(\b)制表符(\t)和换行符组成。1.6、 标识符和关键字。标识符是程序代码中对象的名字。
2025-03-04 11:12:50
219
原创 主时钟与虚拟时钟约束
一个IBUFDS产生的单端clk 作为PLL的input,只需要对sys_clk_p约束就好,如果对 p 和 n都约束,会导致产生不真实的CDC(clock domain corssing)路径。约束中,定义了 名为 sysclk 的物理节点产生的时钟, T 为 10ns, 占空比 50%,定义名称为 SysClk。对于主时钟和衍生时钟,对主时钟约束之后,就可以覆盖衍生时钟的所有路径。1.2.1、时钟网络报告。实例3:高速传输器输出的主时钟约束。实例1:引脚输入的主时钟约束。实例2:引脚输入的主时钟约束。
2025-03-03 12:39:59
848
原创 FPGA时许约束与分析 1
时钟抖动:虽然时钟抖动一般都是 ps ,但是对于几百MHz的clk而言,时钟抖动的占比还是不容忽视的。同步设计:电路的状态变化总是由某个周期信号的变化进行控制的,在这个信号的 posedge 或者是 negedge 都可以作为电路状态的触发条件。数据需求路径:为了确保稳定可靠有效的传输(满足setup time 和 hold time),数据在两个reg之间传输的理论所需时间的计算路径。数据到达路径:数据在两个reg之间传输的实际路径,由此路径可以算出数据在两个reg之间传输的实际时间。
2025-03-02 14:20:50
485
原创 同步有限状态机
状态机分为Moore型状态机和Mealy型状态机,区别主要是在输出,若输出只和当前状态有关,即为Moore型状态机 ,若输出和当前状态以及输入有关,即为Mealy型状态机。 状态机的每一个状态代表一个事件,从当前事件到另一事件 叫做 状态的转移。demo 可乐机
2025-01-21 10:34:13
233
原创 分频器code
数字电路中时钟占有非常重要的地位。时间的计算都依靠时钟信号作为基本单元。一般而言,一块板子只有一个晶振,即只有一种频率的时钟,但是数字系统中,经常需要对基准时钟进行不同倍数的分频,进而得到各模块所需的频率。我们用verilog实现的一般是分频电路,即分频器。分频电路是数字系统设计中常用的基本电路之一。不管是分频还是倍频,都通过PLL实现或者用verilog描述实现。若想得到比系统时钟更慢的时钟,可以将基准时钟进行分频。若想得到比系统时钟更快的时钟,可以将基准时钟进行倍频。分频器分为偶数分频和奇数分频。
2025-01-17 19:56:21
578
原创 计数器code
计数是一种最基本的运算,计数器就是实现着这种运算的逻辑电路。在数字系统中,计数器主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能。
2025-01-17 15:04:40
366
原创 阻塞赋值和非阻塞赋值
非阻塞逻辑开始时 先计算式子右边的语句,赋值操作结束时才更行式子左边的语句,可以认为需要两个步骤来完成赋值。阻塞赋值 用 = 表示 ,这种对应的电路结构常常与触发器没有关系,只与输入电平的变化有关系。可以将阻塞赋值的操作看作只有一个步骤的操作,即将计算赋值符号的右边赋值给左边,在未执行完之前,不允许其他verilog语句执行。非阻塞赋值对应的tb,结果发现,in和in_reg有一个clk延时,in_reg和out有一个延时,也就是in和out有两个延时。
2025-01-16 19:28:01
1120
原创 寄存器 reg
组合逻辑最大的缺点就是存在竞争冒险问题,会增加电路的不稳定性和不确定性,使用时许逻辑可以极大的避免这种问题,使得系统更加的稳定。时序逻辑最基础的单元就是寄存器,寄存器有存储功能,一般是D触发器(D Flip Flop,DFF)组成。由时钟脉冲控制,每个D触发器能够存储一位二进制码。D触发器的功能:在时钟信号的边沿下,将信号从输入端D送到输出端Q;异步复位D触发器,会比同步复位少选择器。
2025-01-15 15:54:24
504
原创 避免Latch的产生
Latch其实就是锁存器,是一种在异步电路系统中对输入信号电平敏感的单元,用来存储信息。在数据未锁存时,锁存器输出端的信号随输入信号变化,就像信号经过一个缓冲器一样,一旦锁存信号有效,则数据被锁存,输入信号不起作用。因此锁存器被称为透明存储器,指的是 不锁存时候输出对于输入是透明的。
2025-01-14 18:11:40
316
原创 简单组合逻辑
在多路数据传输过程中,能够将任意一路选出来的电路叫做数据选择器,也称多路选择器。对于一个具有2^n个输入和一个输出的多路选择器,有n个选择变量,多路选择器也是FPGA内部的一个基本资源,主要用于内部信号的选通。简单的多路选择器还可以通过级联生成更大的多路选择器。
2025-01-13 22:21:58
735
空空如也
Microblaze is held in reset
2022-12-13
关于#ar#的问题,如何解决?
2022-06-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人