FPGA数字系统设计(7)——完整的module参考模型

一、一个完整的module的结构的参考模型:

·define AAAA BBBB                       //宏定义
`include "CCCC.v"                       //文件包含
`timescale 1ns/1ns                      //时间刻度定义
//====================================================================================================
module DDDD (完整的端口列表);         //模块声明,注意端口列表的完整
input [宽度声明] E;                     //输入、输出、双向端口及宽度的声明
output [宽度声明] F;
inout [宽度声明] G;
//===================================================================================================
reg [宽度声明] F;                     //如果输出使用行为级描述的,记得要再声明为reg
reg [宽度声明] H;                     //模块内部需要的变量
wire [宽度声明] J;                     //模块中使用的线网
integer [宽度声明] J;                 //整数型,记得符号
//===================================================================================================
parameter K = 数值;                  //参数声明部分
//===================================================================================================
always @(posedge 信号 or negedge 信号)         //对边沿信号的动作敏感,体现为时序电路
	begin
	F <= E;                               //采用非阻塞方式赋值
	end
//===================================================================================================
always @(信号);                              //对信号的电平动作敏感,体现为组合电路	
	begin 
	F = ~E;                              //采用阻塞方式赋值                                  
	end
//===================================================================================================
assign G = ^E;                               //简单或逻辑清晰的组合逻辑可以使用数据流语句
//===================================================================================================
and and1(out, in1, in2);                     //门级调用
//===================================================================================================
KKK my_kkk(端口连接);                        //实现实例化其他模块,记得保证端口连接方式的正确
//===================================================================================================
task mmm;                                    //函数和任务的层次级别,和门级、数据流级、行为级的语法级别是一            致的 
endtask
function nnn;
endfunction

endmodule

二、应用实例
信号同步
检测信号输入信号的变化,同时跟随信号的变化产生一个输出值。
RTL电路如下图所示

在这里插入图片描述

//检测信号输入信号的变化,同时跟随信号的变化产生一个输出值。
module follow(in, out, clock);
input [7:0] in;
input clock;
output[7:0] out;
reg [7:0] out;
always @(posedge clock)begin
  #1 out = in >> 1 ;
end
endmodule

仿真结果如图所示
在这里插入图片描述

声明:该文只适用于学习,其内容包含来自书本的摘抄和总结,欢迎大家补充,共同学习进步。

猜你喜欢

转载自blog.csdn.net/qq_24213087/article/details/108089255
今日推荐