概述
最近上手一个新项目,工期有点赶,收到很多同学私信催续更,加班加点的终于差不多完事了,开始了心心念念的续更,在这里谢谢大家的支持。
上一张对模块概念和调用作了详细描述,本文主要对模块调用进行巩固,基础模块比如触发器、计数器、选择器都是构建复杂模块的基本单元,这些基础得打牢,建议大家一定要多看代码,下面就带大家一起实战操作。
需要注意的点都在代码里面作了说明,还有问题的可以私信我,我会统一时间回复。
1.“与-或-非”门电路
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 语句)
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 位全加器
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 位计数器
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.同步置数、同步清零的计数器
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.简单算术逻辑单元
`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.“与-或-非”门电路 2.4 选 1 数据选择器(case 语句)3.4 位全加器 4.4 位计数器5.同步置数、同步清零的计数器5.简单算术逻辑单元------->4位全加器和4位计数器的testbench仿真程序+上述程序包自取(0积分下载):https://download.csdn.net/download/JY6669991010/86812736------->下一章:Verilog详解语法之数据类型及其常量和变量-待更新所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复