重学Verilog(3)——参数化模块

时间:2023-03-09 21:40:17
重学Verilog(3)——参数化模块

1.parameter方法

首先有这样一个模块

 module half_adder(co,sum,a,b);
output co,sum;
input a,b;
parameter and_delay = ;
parameter xor_delay = ;
and #and_delay u1(co,a,b);
xor #xor_delay u2(sum,a,b);
endmodule

1.1 defparam方法(Altera)

 module top (...);
input....;
output....;
defparam u_halfadder.and_dealy = 10,u_halfadder.xor_dealy = 10;
half_adder u_halfadder(...);
endmodule

1.2 例化时代入(Xilinx)

module top (...);
input....;
output....;
half_adder #( , 20) u_halfadder (...);
endmodule

2.include方法

M95XXX_Parameters.v 参数定义文件

ref.https://www.cnblogs.com/undermyownmoon/p/7628731.html

`define MEM_ADDR_BITS       11              //memory address bits
`define PAGE_ADDR_BITS 6 //page address bits

M95xxx_Driver.v   驱动文件

`include "M95XXX_Parameters.v"
reg[`MEM_ADDR_BITS-1:0] memory_address;
reg[`PAGE_ADDR_BITS-1:0] page_address;

相关文章