net10 模块top-down设计

底层模块  例化到  顶层模块  

我们不希望用我们用户自定义的时钟做寄存器的触发,时序会变差。所以调用时钟模块    尽量产生标志 而不是占空比为50%的方波

 

如果模块内部接口是输入 例化时连接可以是  wire  也可以是  reg

如果模块内部接口是输出  例化时必须连接  wire

 

 

 

 

复制代码
module    div(
    input    wire    clk,
    input    wire    rst,
    output    reg    po_flag);

reg    [1:0]    cnt;

always@(posedge    clk)
begin
    if(rst)
        cnt<=0;
        else if(cnt=='d3)
        cnt<=1'b0;
        else 
        cnt<=cnt+1'b1;
end

always@(posedge clk)
begin
    if(rst)
        po_flag<=0;
        else if(cnt==3)
        po_flag<=1;
        else begin
            po_flag<=0;
        end
end

endmodule
复制代码
复制代码
module    a_b(
    input    wire    clk,
    input    wire    rst,
    input    wire    po_a,
    input    wire    po_b,
    input    wire    pi_flag,
    output    reg        po_c);

always@(posedge    clk)
begin
    if(rst)
        po_c=0;
        else if(pi_flag) begin
            po_c<=po_a    & po_b;
        end
end

endmodule
复制代码
复制代码
module    top_down(
    input    wire    clk,
    input    wire    rst,
    input    wire    pi_a,
    input    wire    pi_b,
    output    wire    po_c    );

wire    flag;

div top_down_inst(
    .clk(clk),
    .rst(rst),
    .po_flag(flag));

a_b    top_down_inst2(
    .clk(clk),
    .rst(rst),
    .po_a(pi_a),
    .po_b(pi_b),
    .pi_flag(flag),
    .po_c(po_c));

endmodule
复制代码
复制代码
`timescale    1ns/1ns
module    tb_top();
reg    clk,rst;
reg    pi_a,pi_b;
wire    po_c;

initial
begin
    clk=0;
    rst=1;
    pi_a=0;
    pi_b=0;
    #100
    rst=0;
end

always #5    pi_a={$random}%2;
always #5    pi_b={$random}%2;
always #10    clk=~clk;

top_down    tb_top_inst(
    .clk(clk),
    .rst(rst),
    .pi_a(pi_a),
    .pi_b(pi_b),
    .po_c(po_c));

endmodule
复制代码

 

posted @   涛大林  阅读(114)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示