HDLBits学习(一)

Verilog Language

Basics

simple wire

wire信号只能被一个信号所驱动,但wire可以驱动多个信号

wire是连续赋值,即始终等于。而软件是在某个时刻赋值

four wires

not gate/and gate/  n or gate/  nor gate/xnor gate

非门 ~ ! 与门 &  或非门

 

异或xor 同或nxor

^

wire_decl

在定义中间变量时,可以给他们幅值

 7458

Vectors

vector(向量) and detail

向量可以看做是一组wire的合集

type [upper:lower] vector_name;

这里你需要了解一个向量的比特顺序(endianness)信息,比特顺序取决于向量的 LSB 是向量的高位还是地位。比如声明为 [3:0] w 的向量,LSB 是 w[0],如果声明为 [0:3] w,那么 w[3] 是 LSB 。LSB 指的是二进制数中权值最低的一位。

unpacked vs. packed 数组

tpye [位宽]name[数量]

tpye[数量][位宽]name

在 assign 赋值操作中,如果等号左右两侧信号的位宽不同,那么就会进行截断或者补零操作

bitwise operators

&表示按位与

&&表示逻辑与,最终输出1bit结果

{ }拼接运算符,可以在=左右两侧 

{ 重复次数 { 向量 } }。

重复操作符的应用场景之一是在有符号数的扩展。有符号数的扩展是将符号位填充待扩展的比特。比如要将 4bit 的 4'b0101 有符号数扩展为 8bit ,0 是符号位,那么扩展之后为 8'b0000 0101.

拼接运算法的应用:

assign out = ~{{5{a}},{5{b}},{5{c}},{5{d}},{5{e}}} ^ {{5{a,b,c,d,e}}};

全加器优化问题:

左图为逐级进位,右图为选择进位

左图需要等上一级cout的结果,才能进行高位的运算

右图不需要等cout的结果,低位高位一起算,直接将高位的分为两种情况:高位有进位、高位无进位,将两种情况同时计算好直接通过低位的cout选择高出输出。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值