HDLBits学习笔记(11~19)
学习阶段:有问题发873727286@qq.com大家一起讨论。
题目11
题目大意:把输入的向量按下图所示的按位输出
题目分析:向量输入按位输出。
答案:
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,
o0 = vec[0],
o1 = vec[1],
o2 = vec[2];
endmodule
题目12 Vector1
题目大意:把输入的16位数据分成高八位和低八位输出
题目分析:按位输出向量
答案:
module top_module(
input wire [15:0] in,
output wire [7:0] out_hi,
output wire [7:0] out_lo );
assign out_lo[7:0] = in[7:0],
out_hi[7:0] = in[15:8];
endmodule
题目13 Vector2
题目大意:把输入的四个字节反序输出
题目分析:按字节输出向量
答案:
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
题目14 Vectorgates
题目大意:按下列框图输出结果
输入量是两个长度为3的向量。
输出量:
out_or_bitwise是对这两个输入量分别按位取或所得到的结果。
out_or_logical是这两个输出量相或的结果。
out_not是把这两个输入量取非,并把b非放到高位。
题目分析: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[5:0] = {~b,~a};
endmodule
题目15 Gates4
题目大意:有一个长度为4的向量输入,对应四个三个输出分别为,改向量自身的 与 或 异或
题目分析:语法问题。
答案:
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
题目16 Vector3
题目大意:把各个输入按下图顺序输出到各个输出量中
题目分析:语法的使用
答案:
module top_module (
input [4:0] a, b, c, d, e, f,
output [7:0] w, x, y, z );//
assign {w,x,y,z} = {a,b,c,d,e,f,2'b11};
endmodule
题目17 Vectorr
题目大意:把输入的8位向量,颠倒顺序输出。
题目分析:输入输出反序,Verilog不能够改变向量的顺序。
答案:
module top_module(
input [7:0] in,
output [7:0] out
);
assign out = {in[0],in[1],in[2],in[3],in[4],in[5],in[6],in[7]};
endmodule
题目18 Vector4
题目大意:输入量是个八位的向量,输出量是在输入量前面加上24个输入量的第八位。
题目分析:语法运用。
答案:
module top_module (
input [7:0] in,
output [31:0] out );//
assign out = { {24{in[7]}} ,in};
endmodule
题目19 Vector5
题目大意:给定五个1位信号(a,b,c,d和e),在25位输出向量中计算所有25个成对的一位比较。如果要比较的两位相等,则输出应为1。
题目分析:按图来写,语法的使用。
答案:
module top_module (
input a, b, c, d, e,
output [24:0] out );//
assign out = ~{{5{a}} ,{5{b}} ,{5{c}} ,{5{d}} ,{5{e}}} ^ { {5{a,b,c,d,e}} };
endmodule