HDLbits基础知识点与部分题目解析(1)

本文深入浅出地介绍了Verilog HDL的基础概念,包括wire类型的物理连线、reg型寄存器及其位宽设置,以及表达式、逻辑运算和NOR门实例。还涵盖了位反转、向量操作与倍数扩展技巧。适合初学者理解硬件描述语言的基本构造。
摘要由CSDN通过智能技术生成

HDLbits基础知识点与部分题目解析(1)

基础知识

线网(wire)

wire 类型表示硬件单元之间的物理连线,由其连接的器件输出端连续驱动。如果没有驱动元件连接到 wire 型变量,缺省值一般为 “Z”。

在定义wire型变量时不要忘记定义位宽,默认为1bit

寄存器(reg)

寄存器(reg)用来表示存储单元,它会保持数据原有的值,直到被改写。

reg变量通常在always块中被综合成变压触发器,在组合逻辑中北综合成wire型变量。

定义位宽时通常高位在左,表示最高有效位在左。

// Verilog 支持 bit 位后固定位宽的向量域选择访问
// 下面 2 种赋值是等效的
A = data1[31-: 8] ;
A = data1[31:24] ;

其他类型变量

  • 整数(integer)声明时不用指明位宽,位宽和编译器有关,一般为32 bit有符号数(reg型变量为无符号数)

  • 实数(real)声明时不能带有范围,默认值为0,可以用十进制或科学计数法表示。

  • 时间寄存器变量(time)对仿真时间进行保存,其宽度一般为64bit,通过$time获取。

  • 参数(parameter)用来表示常量,只能赋值一次。

  • 数组 举例: wire [7:0] {表示位宽} addr_bus [3:0]{表示个数/维度}

表达式

乘(*)、除(/)、加(+)、减(-)、求幂(**)、取模(%)
a^b ;          //a与b进行异或操作
a~^b ;          //a与b进行同或操作
逻辑操作符主要有 3 个:&&(逻辑与), ||(逻辑或),!(逻辑非)。
移位操作符(<<...) 拼接操作符({,}) 条件操作符(?:)

Norgate 或非门

//nor是或非 xor是异或 xnor是同或...注意区分
module top_module( 
    input a, 
    input b, 
    output out );
    assign out = ~(a|b);//同或为a^~b
endmodule

Vector reversal

//看到题目的第一反应是遍历 但就8bit就一个个拼吧
module top_module( 
    input [7:0] in,
    output [7:0] out
);
    assign out[7:0]={in[0],in[1],in[2],in[3],in[4],in[5],in[6],in[7]};

endmodule

Vector4

module top_module (
    input [7:0] in,
    output [31:0] out );//
    assign out = {{24{in[7]}},in};//倍数要在大括号内
endmodule
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值