收藏此站 联系我们 网站
当前位置:首页» 网络推广 » 【建站服务】海口网页设计-高端网站设计公司-域名申请

【建站服务】海口网页设计-高端网站设计公司-域名申请

作者: 风兰 . 阅读量: 4 . 发表时间:2022-09-21 03:24:15

网站建设

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


海口网页设计-高端网站设计公司

网站建设.png

*) begin
        case(sel)
            2'b00:  q = data1 ;
            2'b01:  q = data2 ;
            2'b10, 2'b11 :  
                    q = 1'b0 ;
        endcase
    end

原信号赋值或判断

在组合逻辑中,如果一个信号的赋值源头有其信号本身,或者判断条件中有其信号本身的逻辑,则也会产生 latch。因为此时信号也需要具有存储功能,但是没有时钟驱动。此类问题在 if 语句、case 语句、问号表达式中都可能出现,例如:

实例

    //signal itself as a part of condition
    reg a, b ;
    always @(*) begin
        if (& b)  a = 1'b1 ;   //a -> latch
        else a = 1'b0 ;
    end
   
    //signal itself are the assigment source
    reg        c;
    wire [1:0] sel ;
    always @(*) begin
        case(sel)
            2'b00:    c = c ;    //c -> latch
            2'b01:    c = 1'b1 ;
            default:  c = 1'b0 ;
        endcase
    end

    //signal itself as a part of condition in "? expression"
    wire      d, sel2;
    assign    d =  (sel2 && d) ? 1'b0 : 1'b1 ;  //d -> latch

避免此类 Latch 的方法,就只有一种,即在组合逻辑中避免这种写法,信号不要给信号自己赋值,且不要用赋值信号本身参与判断条件逻辑。

例如,如果不要求立刻输出,可以将信号进行一个时钟周期的延时再进行相关逻辑的组合。上述第一个产生 Latch 的代码可以描述为:

实例

    reg   a, b ;
    reg   a_r ;
   
    always (@posedge clk)
        a_r  <= a ;
       
    always @(*) begin
        if (a_r & b)  a = 1'b1 ;   //there is no latch
        else a = 1'b0 ;
    end

敏感信号列表不完整

如果组合逻辑中 always@() 块内敏感列表没有列全,该触发的时候没有触发,那么相关寄存器还是会保存之前的输出结果,因而会生成锁存器。

这种情况,把敏感信号补全或者直接用 always@(*) 即可消除 latch。

小结

总之,为避免 latch 的产生,在组合逻辑中,需要注意以下几点:

  • 1)if-else 或 case 语句,结构一定要完整

  • 2)不要将赋值信号放在赋值源头,或条件判断中


关键词:testbench,仿真,文件读写

Verilog 代码设计完成后,还需要进行重要的步骤,即逻辑功能仿真。仿真激励文件称之为 testbench,放在各设计模块的顶层,以便对模块进行系统性的例化调用进行仿真。


毫不夸张的说,对于稍微复杂的 Verilog 设计,如果不进行仿真,即便是经验丰富的老手,99.9999% 以上的设计都不会正常的工作。不能说仿真比设计更加的重要,但是一般来说,仿真花费的时间会比设计花费的时间要多。有时候,考虑到各种应用场景,testbench 的编写也会比 Verilog 设计更加的复杂。所以,数字电路行业会具体划分设计工程师和验证工程师。


下面,对 testbench 做一个简单的学习。


testbench 结构划分

testbench 一般结构如下:



其实 testbench 最基本的结构包括信号声明、激励和模块例化。


根据设计的复杂度,需要引入时钟和复位部分。当然更为复杂的设计,激励部分也会更加复杂。根据自己的验证需求,选择是否需要自校验和停止仿真部分。


当然,复位和时钟产生部分,也可以看做激励,所以它们都可以在一个语句块中实现。也可以拿自校验的结果,作为结束仿真的条件。


实际仿真时,可以根据自己的个人习惯来编写 testbench,这里只是做一份个人的总结。


testbench 仿真举例

前面的章节中,已经写过很多的 testbench。其实它们的结构也都大致相同。


下面,我们举一个数据拼接的简单例子,对 testbench 再做一个具体的分析。


一个 2bit 数据拼接成 8bit 数据的功能模块描述如下:


实例

module  data_consolidation

    (

        input           clk ,

        input           rstn ,

        input [1:0]     din ,          //data in

        input           din_en ,

        output [7:0]    dout ,

        output          dout_en        //data out

     );


   // data shift and counter

    reg [7:0]            data_r ;

    reg [1:0]            state_cnt ;

    always @(posedge clk or negedge rstn) begin

        if (!rstn) begin

            state_cnt     <= 'b0 ;

            data_r        <= 'b0 ;

        end

        else if (din_en) begin

            state_cnt     <= state_cnt + 1'b1 ;    //数据计数

            data_r        <= {data_r[5:0], din} ;  //数据拼接

        end

        else begin

            state_cnt <= 'b0 ;

        end

    end

    assign dout          = data_r ;


    // data output en

    reg                  dout_en_r ;

    always @(posedge clk or negedge rstn) begin

        if (!rstn) begin

            dout_en_r       <= 'b0 ;


海口网页设计-高端网站设计公司


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

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


关键词:网站建设,企业网站,网站制作,网页设计,高端网站建设,企业网站制作,网页制作,制作网站,网站设计,高端网页设计,高端网站设计,做网站,自适应网站

全国服务热线
18114747181
二维码
手机端二维码
上往建站
地址:全国各地都有驻点商务 |  网站建设上往建站
在线咨询QQ:1120768800
 
QQ在线咨询
售前咨询热线
18114747181
营销顾问
营销顾问
售后服务热线
400-000-1116
售后服务
售后服务