HDLBits答案_Verilog Language_Modules: Hierarchy_大河_的博客-程序员宅基地

技术标签: fpga开发  HDLBits答案  

1. Modules

Module - HDLBits

module top_module ( input a, input b, output out );
    
    mod_a u1 (.in1(a),.in2(b),.out(out)) ;

endmodule

2. Connecting ports by position

Module pos - HDLBits

module top_module ( 
    input a, 
    input b, 
    input c,
    input d,
    output out1,
    output out2
);
    
    mod_a instantiate1 (out1,out2,a,b,c,d);

endmodule

3. Connecting ports by name

Module name - HDLBits

module top_module ( 
    input a, 
    input b, 
    input c,
    input d,
    output out1,
    output out2
);
    
    mod_a instantiate2 (.out1(out1),.out2(out2),.in1(a),.in2(b),.in3(c),.in4(d));

endmodule

4. Three moudles

Module shift - HDLBits

module top_module ( input clk, input d, output q );
    
    wire q1,q2;
    my_dff instantiate1 (.clk(clk),.d(d),.q(q1));
    my_dff instantiate2 (.clk(clk),.d(q1),.q(q2));
    my_dff instantiate3 (.clk(clk),.d(q2),.q(q)); 

endmodule

5. Moudles and vectors

Module shift8 - HDLBits

module top_module ( 
    input clk, 
    input [7:0] d, 
    input [1:0] sel, 
    output reg [7:0] q 
);
    wire [7:0] q1,q2,q3;
    
    my_dff8 instantiate1 (.clk(clk), .d(d), .q(q1));
    my_dff8 instantiate2 (.clk(clk), .d(q1), .q(q2));
    my_dff8 instantiate3 (.clk(clk), .d(q2), .q(q3));
    
    always @(*) begin
        case (sel)
            2'b00: q=d;
            2'b01: q=q1;
            2'b10: q=q2;
            2'b11: q=q3;
            default: q=8'bxxxx_xxxx;
        endcase
    end
    
endmodule

6. Adder 1

Module add - HDLBits

module top_module(
    input [31:0] a,
    input [31:0] b,
    output [31:0] sum
);
    wire cout_low;
    
    add16 instantiate1 (.a(a[15:0]), .b(b[15:0]), .sum(sum[15:0]), .cout(cout_low));
    
    add16 instantiate2 (.a(a[31:16]), .b(b[31:16]), .cin(cout_low), .sum(sum[31:16])); 

endmodule

7. Adder 2

Module fadd - HDLBits

module top_module (
    input [31:0] a,
    input [31:0] b,
    output [31:0] sum
);//
    wire cout_low16;
    add16 instantiate1 (.a(a[15:0]),.b(b[15:0]),.sum(sum[15:0]),.cout(cout_low16));
    add16 instantiate2 (.a(a[31:16]),.b(b[31:16]),.cin(cout_low16),.sum(sum[31:16]));

endmodule

module add1 ( input a, input b, input cin,   output sum, output cout );

// Full adder module here
    assign sum = a^b^cin;
    assign cout = (a&b)|(a&cin)|(b&cin);

endmodule

8. Carry-select adder

Module cseladd - HDLBits

module top_module(
    input [31:0] a,
    input [31:0] b,
    output [31:0] sum
);
    wire co_l;
    wire [15:0] sum0,sum1;
    
    add16 instantiate1 (.a(a[15:0]), .b(b[15:0]), .sum(sum[15:0]),.cout(co_l)     );
    add16 instantiate2 (.a(a[31:16]),.b(b[31:16]),.cin(1'b0),     .sum(sum0[15:0]));
    add16 instantiate3 (.a(a[31:16]),.b(b[31:16]),.cin(1'b1),     .sum(sum1[15:0]));
    
    always @(*)
        case (co_l)
            1'b0: sum[31:16] = sum0[15:0];
            1'b1: sum[31:16] = sum1[15:0];
            default: sum[31:16] = 16'h0000;
        endcase
    
endmodule

9. Adder-subtractor

Module addsub - HDLBits

module top_module(
    input [31:0] a,
    input [31:0] b,
    input sub,
    output [31:0] sum
);
    wire [31:0] b_;
    wire co_l;
    
    assign b_ = b^{32{sub}};
    
    add16 instantiate1 (.a(a[15:0]), .b(b_[15:0]), .cin(sub), .sum(sum[15:0]),.cout(co_l));
    add16 instantiate2 (.a(a[31:16]),.b(b_[31:16]),.cin(co_l),.sum(sum[31:16])           );

endmodule

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lihongwei_/article/details/126514686

智能推荐

Hash(哈希)相关知识(哈希函数、哈希查找)_哈希查找知识点-程序员宅基地

Hash(哈希)相关知识前言一. 哈希函数1. 函数特性1.1 基本的哈希函数1.2 加密的哈希函数2. 常见的哈希函数构造法2.1 直接寻址法2.2 数字分析法2.3 平方取中法2.4 折叠法2.5 随机数法2.6 除留余数法2.7 加密哈希函数3. 哈希函数总结二. 哈希查找1. 操作步骤2.哈希表的查找2.1 哈希冲突2.1.1 开放寻址法2.1.2 链地址法2.1.3 再散列法2.1.4 建立公共溢出区前言因为本人是小白(小菜鸡),所以有些地方说的可能不是很准确,大家可以参考一些很厉害的博主,_哈希查找知识点

matlab循环结构程序设计实验报告,实验二MATLAB程序设计-程序员宅基地

《实验二MATLAB程序设计》由会员分享,可在线阅读,更多相关《实验二MATLAB程序设计(4页珍藏版)》请在金锄头文库上搜索。1、1实验二 MATLAB 程序设计一、 实验目的1.掌握利用 if语句实现选择结构的方法。2.掌握利用 switch语句实现多分支选择结构的方法。3.掌握利用 for语句实现循环结构的方法。4.掌握利用 while语句实现循环结构的方法。5.掌握 MATLAB函数的编写..._编写一个程序,求向量x中元素的平均值、最大值、最小值、均方根值

MySQL数据库-笔记04【查询练习题*8道(附解析)】_15、 查询所有学生的sname、cname和degree列-程序员宅基地

22-查询练习-分组计算平均成绩23-查询练习-分组条件与模糊查询24-查询练习-范围查询的两种方式25-查询练习-多表查询26-查询练习-多表查询27-查询练习-三表关联查询28-查询练习-子查询 加 分组求平均分29-查询练习-子查询_15、 查询所有学生的sname、cname和degree列

STM8入门之IAR创建项目及编译下载(STM8S103F3P6)_iar下载-程序员宅基地

刚开始时,本人是以一个workspace下建多个project的方式管理所有项目。但是后来发现,要基于之前某个项目做些新的尝试,但又想保留之前的项目,在复制项目时,感觉很不方便,于是改为一个workspace下只建一个project,多个project则建多个workspace,要想复制项目时则复制整个workspace即可。下面是建立一个模板workspace/project的过程记录:_iar下载

spring cloud alibaba 学习资料整理-程序员宅基地

从昨天晚上,就正式开始探索springCloudAlibaba了、 同样,我会分享一下我花时间找的学习资料,当然是我认为比较好的。 如果要问为什么学这个,举个不恰当的例子。就相当于是抄一份好孩子的作业。阿里生态,胜于一切描述了。今后会有更多的公司迁移到这上边来,就像是使用SSM框架,突然有springboot出来帮你简化操作。# # 入门一个技术最好从视频...

Linux(ubuntu)从零配置django+uwsgi+nginx+virtualenv-程序员宅基地

内置python2和python3.5.2,pip3, 无pippip3 install virualenv安装uwsgipip3 install uwsgi安装成功pip3 install nginx安装失败,尝试升级pip3:pip install --upgrade pippip3 install nginx安装成功

随便推点

数值分析-牛顿法迭代求方程的根-程序员宅基地

使用的方程为2x^3- 4 ^2+3x-7=0 选取的点为1.5但是根据局部收敛性发现1.5在此处不是收敛的,但是却可以迭代出正确结果。代码如下:void initNewton(double x){double newton1(double x);double newton2(double x);double result;double e=0.00000001;int k=0...

11 Paxos是一种提高分布式系统容错性的一致性算法。_云计算中如何利用paxos算法保证系统的容错_EngineerForSoul的博客-程序员宅基地

Paxos是一种提高分布式系统容错性的一致性算法。1、问题描述2、提案的选定3、Paxos一致性算法的条件推荐《从 Paxos 到 ZooKeeper 分布式一致性原理与实践》书,概述讲述的更详细一点,1、问题描述一致性算法要保证如下几点;在被提出的提案中,只有一个会被选定。没有提案被提出时,不会有提案被选定。当某提案被选定后,进程应该可以获取被选定的提案信息。安全性需求:只有被提出的提案才能被选定。只能有一个值被选定。如果进程认为某个提案被选定了,那么该提案必须是真的被选定那个。_云计算中如何利用paxos算法保证系统的容错

向量点乘与叉乘_c# 点的叉积计算-程序员宅基地

向量(Vector)在几乎所有的几何问题中,向量(有时也称矢量)是一个基本点。向量的定义包含方向和一个数(长度)。在二维空间中,一个向量可以用一对x和y来表示。例如由点(1,3)到(5,1的向量可以用(4,-2)来表示。这里大家要特别注意,我这样说并不代表向量定义了起点和终点。向量仅仅定义方向和长度。向量加法向量也支持各种数学运算。最简单的就是加法。我们可以对两个向量相加,得到的仍_c# 点的叉积计算

Kubernetes学习笔记 —— yaml资源清单-程序员宅基地

在k8s中,一般使用yaml格式的文件来创建符合我们预期的pod,这样的yaml文件一般称为资源清单。yaml说明是一个可读性高,用来表达数据序列的格式。yaml:仍是一种标记语言,但为了强调这种语言是以数据为中心,而不是以标记语言为重点。基本语法缩进时不允许使用Tab键,只允许使用空格。 缩进的空格数目不重要,只要相同层级的元素左对齐即可。 # 标识注释,从这个字符一直到行尾,都会被解释器忽略。YAML支持的数据结构对象:键值对的集合,又称为映射/哈希/字典 数组:一组按次序排

Numpy操作本地数据-代码优化-NaN与inf-如何处理nan_-np.inf-程序员宅基地

Numpy操作本地数据写入本地数据np.savetxt(fname)• fname 文件路径• dtype 数据类型• delimiter 分隔符• fmt=’%.18e’ 写入文件的格式,例如:%d,%.2f,%.18e• converters 对数据预处理。比如{0:func}第0列进行func函数预处理• heade_-np.inf

awk的使用及字符串的操作_awk等于字符串-程序员宅基地

awk教程awk的基本功能是对文件进行指定规则浏览和抽取信息。基本格式:(1) awk [-F 分隔域] 'command' input-file(s)(2) 写入shell脚本中(3) awk -f awk-script-file input-file(s)注意:这里如果使用if等编程语句,要用{}括起来。testname grade score _awk等于字符串