【FPGA学习笔记】Verilog语言的模块化设计

在进行模块化设计中,对于复杂的数字系统,我们一般采用自顶向下的设计方式。可以把系统划分成几个功能模块,每个功能模块再划分成下一层的子模块;每个模块的设计对应一个module,一个module设计成一个Verilog程序文件。因此,对一个系统的顶层模块,我们采用结构化的设计,即顶层模块分别调用了各个功能模块

一、以下以静态数码管显示实验为例简单介绍。

1、底层模块1(计时模块)

module time_count(
	input clk;
	input rst_n;
	output reg flag;
	);
//parameter define 
parameter MAX_NUM =25000000;//计数器最大值
...
endmodule

2、底层模块2(数码管静态显示模块)

module reg_led_static(
	input clk;
	input rst_n;
	input addr_flag;

	output reg [5:0] sel;
	output reg [5:0] sel_led;
	);
    ...
endmodule

3、顶层模块对以上两个模块进行例化

module seg_led_static_top(
	input sys_clk;
	input sys_rst_n;

	output sel;
	output sel_led;
	);
//parameter difine
parameter MAX_SHOW = 25'd25000000;
wire addr_flag;

//*****main code****

//计时器模块例化
time_count #(
	.MAX_NUM (MAX_SHOW)
)u_time_count(	
	.clk (sys_clk),
	.rst_n (sys_rst_n),
	.flag (addr_flag)
);

//数码管显示模块例化
reg_led_static u_reg_led_static(
	.clk (sys_clk),
	.rst (sys_rst_n),

	.addr_flag (addr_flag),
	.sel (sel),
	.sel_led (sel_led)
	);

二、小结
在这里插入图片描述

发布了12 篇原创文章 · 获赞 3 · 访问量 620

猜你喜欢

转载自blog.csdn.net/yang_jiangning/article/details/104671034