【Verilog基础】6.符号扩展、同步/异步、阻塞/非阻塞

本文涵盖了计算机算术的基础概念,如符号扩展和绝对值计算,以及有符号数到无符号数的转换。讨论了组合电路和时序电路的区别,强调了同步电路和异步电路在时序控制上的差异。此外,还提到了同步复位和异步复位在系统复位操作中的作用,并解释了阻塞和非阻塞赋值在硬件描述语言中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、有符号位符号数扩展

符号扩展是计算机算术中在保留数字的符号(正/负)和值的同时增加二进制数的位数的操作。例如10的二进制数“ 00 1010”,并且符号扩展操作将字长增加到16位,则新的表示形式就是“ 0000 0000 0000 1010”。-15的二进制补码值“1111110001”,并且将其符号扩展为16位,则新表示为“1111 1111 1111 0001 ”。

假设a和b是无符号数,是16位,out1 是17位,做减法的时候系统会自动帮我们补位0,如果a和b是有符号数,这时候我们就不能依靠系统来进行自动补位,我们要手动进行补位,不然得出来的结论是不正确的。

2、绝对值

3、有符号数转换为无符号数

 

4、组合电路和时序电路 

时序电路中含有存储单元,所以输出不仅和当前输入有关,还和电路的当前状态有关,而组合电路的输出只取决于当前的输入;

组合逻辑电路的分析方法:确定输入和输出变量;列出真值表;写出逻辑表达式;逻辑表达式进行化简;画出逻辑电路图

时序逻辑电路的分析方法:从逻辑图中写出每个触发器的驱动方程;带入相应的触发器的特性方程;根据逻辑图写出输出方程

5、同步电路和异步电路    

同步电路是由时序电路(寄存器和各种触发器)和组合逻辑构成的电路,每一个操作都是在严格的时钟控制下完成的,这些时钟电路共享一个时钟clk,所有的状态变化都是在时钟的上升沿和下降沿来完成的,同步电路的核心逻辑是用触发器来实现的,依据时钟沿查收信号可以很好地避免毛刺,有利于器件移植、静态时序分析和验证设计时序性能等

而异步电路的核心是使用组合电路来实现的,容易产生毛刺。异步电路没有时钟歪斜问题,较低的电源消耗,平均效能、模块性、可组合和复用性。

6、同步复位和异步复位

同步复位:是指复位信息只有在时钟上升沿到来时,才能有效,否则无法完成对系统的复位工作。异步复位:是指无论时钟沿是否到来,只要复位信号有效,就对系统进行复位。同步复位和异步复位产生的RTL电路也有所不同。

 7、阻塞和非阻塞

阻塞赋值操作符用“=”表示。阻塞是指在进程语句,当前的赋值语句阻断了后面的语句,也就是说后面的语句必须等到当前的赋值语句执行完毕才能执行,阻塞赋值可以看成是一步完成的。阻塞是顺序执行的,在不同的过程赋值语句块中,阻塞赋值的循序语法是无法定义的

非阻塞赋值操作符用“<=”表示。非阻塞是指在进程语句中,当前的赋值语句不会阻断其后的语句。非阻塞语句可以认为是分为两个步骤进行的:第一步,计算等号右边的表达式的值;第二步,在本条赋值语句结束时,将等号右边的值赋给等号左边的变量。非阻塞语句是完全同时执行的

always @(posedge clk)
begin
	b = a;
	c = b;
end

 

always @(posedge i_clk)
begin
	b <= a;
	c <= b;
end

可综合的code建议:组合电路使用“=”赋值,时序逻辑使用“<=”赋值,#1(delay)可以使用,但是在综合的时候会被忽略掉,在多个语句块中不要对同一个变量进行赋值,在一个alwaysy块中,一次触发只对同一个信号最多赋值一次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值