现总结一下自己编写verilog程序的一点经验
1.写一个模块时,不知道input output 端口,哪个该用 reg型 还是wire型?
我的办法是所有的模块输入输出都是wire型,也就是默认的.
reg型变量在模块内部使用时声明,作为output时再用assign语句赋回来。
简化了端口特点,不用再记住是wire,还是reg了.只要是output模块内部
都会有相应的reg型寄存器与其对应.如下例:
module Calc_Sync
(
input Sync_S_Flag,
output S_Flag
);
reg rS_Flag;
assign S_Flag = rS_Flag;
reg [3:0] flag_count;
parameter MAX_CLK = 27'd40_000_000;
`define ONE_CLK = 27'd22_00;
后面在always 里对rS_Flag的写操作就和对S_Flag的输出保持一致。 |