hdlbits Verilog代码 Vector2及以后(持续更新)

本文介绍了使用Verilog进行Vector操作,包括位级操作和向量赋值,并展示了如何设计各种组合逻辑模块,如与门、或门、异或门、位移位等,以及如何避免在always块中创建锁存器错误。
摘要由CSDN通过智能技术生成

Vector2

 assign out[31:24] = in[7:0];
    assign out[23:16] = in[15:8];
    assign out[15:8] = in[23:16];
    assign out[7:0] = in[31:24];
 

Vectorgates

        assign out_or_bitwise=a|b;

        assign out_or_logical=a||b;

        assign out_not={~b,~a};

位或(bitwise OR)和逻辑或(logical OR)是两种不同的操作符,但它们有一些相似之处。

位或是一种二进制运算符,在两个二进制数的每一位上执行逻辑或操作。即如果其中任何一个二进制数的位为1,则结果的相应位也为1,否则为0。

int a = 5; // 二进制为 101
int b = 3; // 二进制为 011
int c = a | b; // 二进制为 111, 十进制为 7
 

逻辑或是一种逻辑运算符,用于比较两个布尔值(通常为真和假)。如果其中任何一个布尔值被判断为“真”,则结果为“真”,否则为“假”。

在某些编程语言中,包括C、C++和Java等,当应用于整数类型时,

“|”符号通常被解释为位或,

“||”符号通常被解释为逻辑或。

Gates4

建立一个有四个输入的组合电路,在[3:0]中。
有3个输出:
out_and: 4路与门的输出。
out_or: 4路OR门的输出。
out_xor:四路异或门的输出。

   assign out_and = in[3]&in[2]&in[1]&in[0];
    assign out_or = in[3]|in[2]|in[1]|in[0];
    assign out_xor = in[3]^in[2]^in[1]^in[0];

Vector3

assign { w,x,y,z } = { a,b,c,d,e,f,2'b11 };

Vectorr

 assign out = {in[0],in[1],in[2],in[3],in[4],in[5],in[6],in[7]};

Vector4

assign out = {    {24 { in[7] } }, in  };

复制运算符允许重复一个向量并将它们连接在一起:

{num{vector}}

复制操作符的一个常见情况是将一个较小的数字进行符号扩展为一个较大的数字,同时保留其有符号值。这是通过复制左边较小数字的符号位(最有效的位)来实现的。例如,将4'b0101(5)扩展到8位将得到8'b00000101(5),而将4'b1101(-3)扩展到8位将得到8'b11111101(-3)。

Vector5

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

Module

By position

mod_a instance1 ( a, b, out );

By name

mod_a instance2 ( .out(out), .in1(a), .in2(b) );

Modul

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值