首页 > 其他分享 >【HDLBits刷题日记】02 Vectors

【HDLBits刷题日记】02 Vectors

时间:2022-10-17 23:00:17浏览次数:53  
标签:02 wire Vectors module input output 刷题 assign out

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

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

标签:02,wire,Vectors,module,input,output,刷题,assign,out
From: https://www.cnblogs.com/magnolia666/p/16801060.html

相关文章

  • 2022下半年 Acwing 第一篇:快排模板
    模板内容:C++voidquick(intq[],intl,intr){if(l>=r)return;intx=q[(l+r+1)>>1],i=l-1,j=r+1;while(i<j){doi++;while(q[i]<x);......
  • 2022NOIPA层联测10 10月17日
    一句话总结:T1不会,T2多\(\log\)而且写挂了,T3T4没看,56分离场。部分题解T1.异或(xor)推了一大堆没用的结论,没想到分治。题解:从高位到低位处理,对于每一层,如果当前这段......
  • R如何输出001,002,003等序号/编号?
    目录需求formatC函数解决需求R默认带文本的编号不是按数字来排序的,这会对数据排序造成一定影响。如paste0("sample",1:10)在列中排序不是按1-100,而是按ASCII排序。>sor......
  • 动力节点——day02
    ipconfigip地址的配置信息,ipconfig-all更详细的配置信息查看两台计算机是否可以正常通信pingip地址/域名(-t)快捷键:ctrl+c复制 ctrl+v粘贴 ctrl+x剪切 ctrl+......
  • 1002 写出这个数(JAVA)
    读入一个正整数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。输出格式:在一行......
  • 报告分享|2022年中国灵活用工市场研究报告
    报告链接:http://tecdat.cn/?p=29474报告回顾了2021年中国网络招聘行业市场发展变化,从多个角度解读市场以及行业的变化。通过分析以上变化,总结如今网络招聘行业存在的问题......
  • 报告分享|2022中国高净值人群消费洞察与中高端冰洗消费趋势报告
    报告链接:http://tecdat.cn/?p=29476家电,作为追求美好生活的重要载体,正不断通过提升其艺术价值、精神内涵,以及个性化使用体验,来满足高净值人群“享受高品质生活”的消费需......
  • 20221017小米面试经历
    时间:2022/10/1715:00形式:牛客几乎一模一样:小米前端实习一面利用flex布局实现几个效果普通居中,但是注意order双栏ACB,各靠左和靠右,利用marginauto居中,ABC......
  • 报告分享|2022全球汽车供应链核心企业竞争力白皮书
    报告链接: http://tecdat.cn/?p=29472趋势一:全球零部件企业盈利水平恢复至疫情前水平,显著回升2021年,“新五化”为零部件企业释放了更广阔的增长空间。同时整体航运和物流......
  • 1024 科学计数法(JAVA)
    科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]​​.​​[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位,该数字......