您身边的网站建设专家
成功案例

【建站服务】甘南企业网站设计 - 甘南高端网站定制 - 甘南品牌网站搭建 - 上往建站-域名申请

日期: 2022-09-21 03:27:37 浏览数:7


上往建站提供服务器空间服务商百度快照排名网站托管百度推广运营,致力于设计外包服务与源代码定制开发360推广搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。


甘南企业网站设计 - 甘南高端网站定制 - 甘南品牌网站搭建 - 上往建站

网站建设.png

       .Ci     (co_temp[i-1]), //上一个全加器的溢位是下一个的进位
            .So     (so[i]),
            .Co     (co_temp[i]));
        end
    endgenerate
 
    assign co    = co_temp[3] ;
 
endmodule

testbench 如下:

实例

`timescale 1ns/1ns
 
module test ;
    reg  [3:0]   a ;
    reg  [3:0]   b ;
    //reg          c ;
    wire [3:0]   so ;
    wire         co ;
 
    //简单驱动
    initial begin
        a = 4'd5 ;
        b = 4'd2 ;
        #10 ;
        a = 4'd10 ;
        b = 4'd8 ;
    end
 
    full_adder4  u_adder4(
               .a      (a),
               .b      (b),
               .c      (1'b0),   //端口可以连接常量
               .so     (so),
               .co     (co));
 
    initial begin
        forever begin
            #100;
            if ($time >= 1000)  $finish ;
        end
    end
 
endmodule // test

仿真结果如下,可知 4bit 全加器工作正常:

层次访问

每一个例化模块的名字,每个模块的信号变量等,都使用一个特定的标识符进行定义。在整个层次设计中,每个标识符都具有唯一的位置与名字。

Verilog 中,通过使用一连串的 . 符号对各个模块的标识符进行层次分隔连接,就可以在任何地方通过指定完整的层次名对整个设计中的标识符进行访问。

层次访问多见于仿真中。

例如,有以下层次设计,则叶单元、子模块和顶层模块间的信号就可以相互访问。

实例

//u_n1模块中访问u_n3模块信号:
= top.u_m2.u_n3.c ;

//u_n1模块中访问top模块信号
if (top.p == 'b0) a = 1'b1 ;

//top模块中访问u_n4模块信号


键词: defparam,参数,例化,ram

当一个模块被另一个模块引用例化时,高层模块可以对低层模块的参数值进行改写。这样就允许在编译时将不同的参数传递给多个相同名字的模块,而不用单独为只有参数不同的多个模块再新建文件。


参数覆盖有 2 种方式:1)使用关键字 defparam,2)带参数值模块例化。


defparam 语句

可以用关键字 defparam 通过模块层次调用的方法,来改写低层次模块的参数值。


例如对一个单口地址线和数据线都是 4bit 宽度的 ram 模块的 MASK 参数进行改写:


实例

//instantiation

defparam     u_ram_4x4.MASK = 7 ;

ram_4x4    u_ram_4x4

    (

        .CLK    (clk),

        .A      (a[4-1:0]),

        .D      (d),

        .EN     (en),

        .WR     (wr),    //1 for write and 0 for read

        .Q      (q)    );

ram_4x4 的模型如下:


实例

module  ram_4x4

    (

     input               CLK ,

     input [4-1:0]       A ,

     input [4-1:0]       D ,

     input               EN ,

     input               WR ,    //1 for write and 0 for read

     output reg [4-1:0]  Q    );

 

    parameter        MASK = 3 ;

 

    reg [4-1:0]     mem [0:(1<<4)-1] ;

    always @(posedge CLK) begin

        if (EN && WR) begin

            mem[A]  <= D & MASK;

        end

        else if (EN && !WR) begin

            Q       <= mem[A] & MASK;

        end

    end

 

endmodule

对此进行一个简单的仿真,testbench 编写如下:


实例

`timescale 1ns/1ns

 

module test ;

    parameter    AW = 4 ;

    parameter    DW = 4 ;

 



甘南企业网站设计 - 甘南高端网站定制 - 甘南品牌网站搭建 - 上往建站


上往建站提供搭建网站域名注册官网备案服务网店详情页设计企业网店专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管网页美工排版,致力于域名申请竞价托管软文推广全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机网站推广百度竞价托管网站建设上网建站推广服务网络公司有哪些等业务,专业团队服务,效果好。

服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)


全国咨询热线:400-111-6878

地址:全国各地都有驻点商务

Copyright © 2021 通陆科技

网站建设上往建站