设为首页 加入收藏

TOP

【HDLBits刷题笔记】02 Vectors
2023-07-23 13:25:54 】 浏览:197
Tags:HDLBits Vectors

Vector0

向量赋值。

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 = vec[2];
    assign o1 = vec[1];
    assign o0 = vec[0];
endmodule

Vector1

注意使用未声明的接口会隐式地生成一个1bit的wire变量,加一个`default_nettype none可以不隐式声明,从而找到一些隐藏的bug。

`default_nettype none     // Disable implicit nets. Reduces some types of bugs.
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

Vector2

大端和小端的转换。

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

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

endmodule

Vectorgates

按位或,逻辑或。

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 = {~b,~a};

endmodule

Gates4

按位计算。

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

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

Vectorr

将输入反转。注意assign out[7:0] = in[0:7];是错的,因为verilog不允许in[0:7]这样的写法

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

Vector4

注意赋值的时候外面也要加{},如{24{in[7]}}不能写成24{in[7]}。

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

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

endmodule

Vector5

这题稍微有点意思,通过复制运算符可以将五个信号的全部按位同或计算出来。

module top_module (
    input a, b, c, d, e,
    output [24:0] out );//

    // The output is XNOR of two vectors created by 
    // concatenating and replicating the five inputs.
    assign out = ~{ {5{a}},{5{b}},{5{c}},{5{d}},{5{e}} } ^ { 5{a,b,c,d,e}};

endmodule

今天的题整体也比较简单,不过网站上有一些知识点也是很有用的。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【HDLBits刷题笔记】04 Procedures 下一篇【HDLBits刷题笔记】03 Modules: ..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目