HDLBits每日刷题Day3

2.2Vectors
2.2.1Vectors
问题陈述:

构建一个具有一个 3 位输入的电路,然后输出相同的向量,并将其拆分为三个单独的 1 位输出。将输出连接o0到输入向量的位置 0、o1位置 1 等。

在图中,旁边带有数字的刻度线表示向量(或“总线”)的宽度,而不是为向量中的每个位绘制单独的线。

在这里插入图片描述

Verilog代码:

module top_module ( 
    input wire [2:0] vec,
    output wire [2:0] outv,
    output wire o2,
    output wire o1,
    output wire o0  ); // Module body starts after module declaration
	assign outv=vec;
    assign o2=outv[2];
    assign o1=outv[1];
    assign o0=outv[0];
endmodule

2.2.2 Vectors in more detail
问题陈述:

构建一个组合电路,将输入半字(16 位, [15:0] )拆分为低 [7:0] 和高 [15:8] 字节

Verilog代码:

module top_module( 
    input wire [15:0] in,
    output wire [7:0] out_hi,
    output wire [7:0] out_lo );
    
    assign out_hi=in[15:8];
    assign out_lo=in[7:0];
endmodule

2.2.3 Vector part select
问题陈述:

一个 32 位向量可以被视为包含 4 个字节(位 [31:24]、[23:16] 等)。构建一个将反转4 字节字 的字节顺序的电路。

AaaaaaaBbbbbbbbbCccccccDdddddddd => DddddddCccccccBbbbbbbbbAaaaaaa

Verilog代码:

module top_module (
	input [31:0] in,
	output [31:0] out
);

	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];	
	
endmodule

2.2.4Bitwise operators
问题陈述:

构建一个具有两个 3 位输入的电路,用于计算两个向量的按位或、两个向量的逻辑或以及两个向量的逆 (NOT)。将b的反放在out_not的高四位,将a的反放在out_not的低四位。
在这里插入图片描述

注意:
1.两个 N 位向量之间的按位运算复制向量的每个位的运算并产生 N 位输出。
2.逻辑运算将整个向量视为布尔值(真 = 非零,假 = 零)和产生 1 位输出。
3.“按位或”的符号:|
逻辑或的符号:||
Verilog 代码:

module top_module(
	input [2:0] a, 
	input [2:0] b, 
	output [2:0] out_or_bitwise,
	output out_or_logical,
	output [5:0] out_not
);
	
	assign out_or_bitwise = a | b;
	assign out_or_logical = a || b;

	assign out_not[2:0] = ~a;	
	assign out_not[5:3] = ~b;

2.2.5 Four-input gate
问题陈述:

构建一个具有四个输入的组合电路in[3:0]。

有3个输出:
out_and:4 输入与门的输出。
out_or:4 输入或门的输出。
out_xor:4 输入异或门的输出。
Verilog代码:

module top_module( 
    input [3:0] in,
    output out_and,
    output out_or,
    output out_xor
);
	assign out_and=∈
    assign out_or=|in;
    assign out_xor=^in;
endmodule

每日总结:
按位与逻辑运算
1.按位运算:
1)两个 N 位向量之间的按位运算复制向量的每个位的运算并产生 N 位输出。
2)位运算符

位运算符
取反
&按位与
I按位或
^按位异或
^ ~按位同或

2.逻辑运算:
1)逻辑运算将整个向量视为布尔值(真 = 非零,假 = 零)和产生 1 位输出。
2)逻辑运算符

逻辑运算符
&&逻辑与
II逻辑或
逻辑非
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值