- 博客(15)
- 收藏
- 关注
原创 Verilog非阻塞语句之赋值解析(含波形图)
通俗讲,就是本次执行的时候大家都藏着掖着,互相只知道上次执行完每个人的值,等本次执行完的时候,每个人才会向外界公开执行时藏着掖着的值,理论上讲,就是两个式子同时赋值,a=1和b=a并行执行,在b=a的时刻a还是0。在第2个红框中的上升沿来临一瞬间,a已经向外界公开了自己是5,所以开始进入判断语句,执行c=c+1,一瞬间之后,过程块2执行完毕,c向外界公开自己是1。1、过程块1的作用是在上升沿来临之时,a自增1同时b取a的值,过程块2的作用是在上升沿来临之时,如果a≥5则c自增1。
2024-08-27 10:23:10 354
转载 Verilog-阻塞非阻塞赋值在always语句中的表现
而always@(posedge clk or negedge rst_n)是时序逻辑,其中阻塞赋值和非阻塞赋值是起作用的,阻塞赋值可以理解成一堆组合逻辑连接了一个D触发器的结构,非阻塞可以看成时流水线结构。通常书上说组合逻辑要用阻塞赋值,时序逻辑要用非阻塞赋值,但偏偏有些人写代码喜欢在组合逻辑里边用非阻塞,时序逻辑里边用阻塞,有时还混用,看的让人头大,今天我就专门写个博客记录一下这个阻塞非阻塞在组合逻辑和时序逻辑中的效果,以后我头大的时候还能回来看看。不多bb,直接放代码和仿真图。
2024-04-11 10:53:22 472
原创 Verilog验证--testbench
1、testbench中以 initial begin...end进行复位,数据初始化(只执行一遍)(例化中,input转换成reg;output转换成wire;inout转换成wire;(200ns,10个时钟周期后停止复位,模块开始运行)3、判断被测试设计.v的输出响应是否满足要求。1、被测试设计.v的顶层接口进行例化。2、被测试设计.v的输入接口添加激励。,#N:延迟N个时间单位。
2024-04-03 12:50:07 321 1
原创 HDLBITS-有限状态机-周期循环计数器
当s = 0时,状态为A,当s = 1时,状态为B。如果w在这两个时钟周期中恰好为1,则FSM必须在下一个时钟周期中将输出z设置为1。使用尽可能少的状态。注意,s输入只在状态A中使用,所以您需要只考虑w输入。大概意思是状态机复位状态在A,检测到s为1后进入状态B,在状态B每隔三个时钟周期就检查一次这三个时钟周期内w为高的时钟周期个数是否为2,若是则拉高输出z一个周期。参考原文链接:https://blog.csdn.net/wuzhikaidetb/article/details/120381765。
2024-03-21 19:56:29 277 1
原创 vivado报错:procedural assignment to a non-register result is not permitted“
6、在使用always块时,赋值语句中,只能是reg类型(若想对输出output在always块内进行赋值,可以在声明中改为 output reg [23:0] out_bytes.)2、组合逻辑一定用”=” ,一旦敏感列表没有 posedge 就用”=”,一旦看到 assign 就用”=”。3、时序逻辑和组合逻辑分成不同的模块,即一个 always 模块里面只能出现非阻塞赋值”<=”或者”=”。1、时序逻辑一定用非阻塞赋值”<=”,一旦看到敏感列表有 posedge 就用”<=”。
2024-03-20 10:25:51 479 1
原创 Verilog之实例化中的#符号
》在顶层模块or激励文件里,对模块的实例化可以通过符号 # ,实现对该模块内置参数parameter进行设置。
2024-03-17 11:04:57 316 1
原创 阻塞赋值VS非阻塞赋值
其中非阻塞的含义为在执行当前的非阻塞赋值语句的同时允许其他的语句执行。阻塞赋值操作实质上是一次性连续完成的,即计算等号右边变量(或表达式)的值(RHS)并立即赋值给等号左边的变量(LHS)。阻塞赋值在一个always块中,后面的语句会受到前语句的影响,具体来说,在同一个always中,一条阻塞赋值语句如果没有执行结束,那么该语句后面的语句就不能被执行,即被“阻塞”。一条非阻塞赋值语句的执行是不会阻塞下一条语句的执行,也就是说在本条非阻塞赋值语句执行完毕前,下一条语句也可开始执行。
2024-03-10 22:00:40 269 1
原创 HDL_BITS--移位寄存器中非阻塞赋值
考虑如下所示的n位移位寄存器电路:为移位寄存器编写一个顶级Verilog模块(名为top_module),假设n= 4。实例化 4 个 顶级模块中 MUXDFF 子电路的副本。假设您将在 DE2 板上实现电路。LEDR[3:0]。①。
2024-02-25 15:39:52 280 1
原创 HDL_BITS--边缘捕获
每个输出位的行为类似于 SR 触发器:输出位应设置为(1)在发生 1 到 0 转换后的周期。对于32位向量中的每一位,当输入信号从一个时钟周期的1变化到下一个时钟周期的0时捕获(因为in由1变到0后,out才为1,故为捕捉下降沿),“捕获”意味着输出将保持1(直到被reset高电平有效进行复位(同步重置)。对于 32 位矢量中的每个位,捕获输入信号从一个时钟周期中的 1 变为下一个时钟周期的 0。在下面示例波形的最后4个周期中,“reset”事件比“set”事件早一个周期发生,因此这里不存在冲突。
2024-01-26 16:57:26 653 1
原创 HDL_BITS--边沿检测电路
题目:对于8位向量中的每一位,检测输入信号何时从一个时钟周期的0变化到下一个时钟周期的1(上升沿检测)。前提:边沿检测用于检测信号的上升沿或下降沿,通常用于使能信号的捕捉等场景。
2024-01-26 16:09:45 233 1
原创 HDL_BITS--for与always与generate
本人小白在学习Verilog语法过程中,由于没有系统的学习相关知识,因此浅浅记录一下。:给定一个 100 位输入向量 [99:0],反转其位顺序。
2024-01-25 15:31:09 398
原创 HDL_BITS--三元条件运算符
因为我没有定义temp1和temp2这两个中间变量的位宽,导致默认1位,因此在利用三元条件运算符的时候,进行逐一比较,直到第一位不同大小的值进行比较,并且保存到中间变量。这也是为什么时序图中我的答案只出现了0,1两种情况。给定四个无符号数字,找到最小值。无符号数字可以与标准比较运算符(a < b)进行比较。使用条件运算符创建双向最小电路,然后组合其中的一些电路以创建 4 向。Verilog 有一个三元条件运算符,即(状态?您可能需要一些用于中间结果的线向量。
2024-01-25 11:45:41 422
原创 HDL_BITS--always与实例化
出发点是想试试能否在if begin end语句实现在always里面完成实例化,通过不断的调试和找错发现always块内不能够进行实例化。Verilog中always块内不正确实例化导致代码编译失败。
2024-01-24 17:45:42 661
原创 HDL_BITS--模块实例化&移位
根据图片信息例化三个my_dff模块就行,中间的两根连线记得搞两个wire变量。主要考察模块例化、以及识别模块框图的能力。Verilog的实例化灵活应用。
2024-01-24 15:35:29 492 1
转载 VMware虚拟机NAT模式下无法上网解决办法
在Windows,win+R 运行 “services.msc”查看VMware DHCP Service和VMware NAT service这两个服务,如果已启动,重启服务即可上网。原文链接:https://blog.csdn.net/weixin_43757336/article/details/129277903。版权声明:本文为CSDN博主「七弦·」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。设置了NAT模式,可以上网,过了一段时间,无法上网了。
2023-11-18 11:15:41 165 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人