我是靠谱客的博主 清脆蜡烛,这篇文章主要介绍Verilog语法之模块巩固(3)(实例练习篇)1.“与-或-非”门电路 2.4 选 1 数据选择器(case 语句)3.4 位全加器 4.4 位计数器5.同步置数、同步清零的计数器5.简单算术逻辑单元------->4位全加器和4位计数器的testbench仿真程序+上述程序包自取(0积分下载):https://download.csdn.net/download/JY6669991010/86812736------->下一章:Verilog详解语法之数据类型及其常量和变量-待更新,现在分享给大家,希望可以做个参考。

        最近上手一个新项目,工期有点赶,收到很多同学私信催续更,加班加点的终于差不多完事了,开始了心心念念的续更,在这里谢谢大家的支持。

        上一张对模块概念和调用作了详细描述,本文主要对模块调用进行巩固,基础模块比如触发器、计数器、选择器都是构建复杂模块的基本单元,这些基础得打牢,建议大家一定要多看代码,下面就带大家一起实战操作。

        需要注意的点都在代码里面作了说明,还有问题的可以私信我,我会统一时间回复。

1.“与-或-非”门电路

复制代码
1
2
3
4
5
6
7
8
9
10
module AOI(A,B,C,D,F); //模块名为 AOI(端口列表 A,B,C,D,F) input A,B,C,D; //模块的输入端口为 A,B,C,D output F; //模块的输出端口为 F wire A,B,C,D,F; //定义信号的数据类型 assign F= ~((A&B)|(C&D)); //逻辑功能描述 endmodule

2.4 选 1 数据选择器(case 语句)

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
module mux4_1(out,in0,in1,in2,in3,sel); output out; input in0,in1,in2,in3; //默认wire型 input[1:0] sel; reg out; /* 如果output作为过程赋值语句的左值,则应该用reg类型; 如果output作为连续赋值语句的左值,则应该用wire类型。 */ always @(in0 or in1 or in2 or in3 or sel) //敏感信号列表 case(sel) 2'b00: out=in0; 2'b01: out=in1; 2'b10: out=in2; 2'b11: out=in3; default: out=2'bx; endcase endmodule

3.4 位全加器

复制代码
1
2
3
4
5
6
7
8
module adder4(cout,sum,ina,inb,cin); output[3:0] sum; output cout; input[3:0] ina,inb; input cin; assign {cout,sum}=ina+inb+cin; endmodule

4.4 位计数器

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
module count4(out,reset,clk); output[3:0] out; input reset,clk; reg[3:0] out; always @(posedge clk) begin if (reset) out<=0; //同一个时钟下为同步复位 else out<=out+1; //计数 end endmodule

5.同步置数、同步清零的计数器

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
module count(out,data,load,reset,clk); output[7:0] out; input[7:0] data; input load,clk,reset; reg[7:0] out; always @(posedge clk) //clk 上升沿触发 begin if (!reset) out = 8'h00; //同步清 0,低电平有效 else if (load) out = data; //同步预置 else out = out + 1; //计数 end endmodule

5.简单算术逻辑单元

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
`define add 3'd0 `define minus 3'd1 `define band 3'd2 `define bor 3'd3 `define bnot 3'd4 module alu(out,opcode,a,b); output[7:0] out; reg[7:0] out; input[2:0] opcode; //操作码 input[7:0] a,b; //操作数 always@(opcode or a or b) //电平敏感的 always 块 begin case(opcode) `add: out = a+b; //加操作 `minus: out = a-b; //减操作 `band: out = a&b; //求与 `bor: out = a|b; //求或 `bnot: out=~a; //求反 default: out=8'hx; //未收到指令时,输出任意态 endcase end endmodule

------->4位全加器和4位计数器的testbench仿真程序+上述程序包自取(0积分下载):https://download.csdn.net/download/JY6669991010/86812736

------->下一章:Verilog详解语法之数据类型及其常量和变量-待更新

章节进程条-STEP1

最后

以上就是清脆蜡烛最近收集整理的关于Verilog语法之模块巩固(3)(实例练习篇)1.“与-或-非”门电路 2.4 选 1 数据选择器(case 语句)3.4 位全加器 4.4 位计数器5.同步置数、同步清零的计数器5.简单算术逻辑单元------->4位全加器和4位计数器的testbench仿真程序+上述程序包自取(0积分下载):https://download.csdn.net/download/JY6669991010/86812736------->下一章:Verilog详解语法之数据类型及其常量和变量-待更新的全部内容,更多相关Verilog语法之模块巩固(3)(实例练习篇)1.“与-或-非”门电路内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部