欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2933|回復: 0
打印 上一主題 下一主題
收起左側

FPGA設計中的一個小分析

[復制鏈接]
跳轉到指定樓層
樓主

在我看過的很多代碼中,發現許多人在對變量賦初始值(或常量值)0時的做法各種各樣,現在來分析下這幾種情況對設計的影響。以對64位變量a賦初始值0為例:

(1)第一種:a <= 64’d0; 對于這種指定變量具體位寬的代碼風格,我是直接否定的,因為它不利于參數化設計;

(2)第二種:a <= 0;(或a <= (0);)而對于這種直接賦一個0的做法呢,一般情況下對設計是沒有影響的,而且還能進行參數化設計,但是在另外一種情況下是要注意的,就是例化子模塊時對位寬大于32的變量賦0,就會出現意想不到的情況。現在舉個簡單的例子來證實這種情況。假設在子模塊中對一個64位的輸入變量取反后進行輸出,而在頂層模塊中將子模塊輸出變量的第33位進行輸出,用于硬件led的測試。

頂層模塊:

/**********************************************版權申明*************************************************
**                                   電子技術應用網站, CrazyBird
**--------------------------------------------文件信息--------------------------------------------------
** 文件名:          led_top.v
** 創建者:          CrazyBird
** 創建日期:        2015-8-2
** 版本號:           v1.0
** 功能描述:        對變量直接賦0的測試
**                   
********************************************************************************************************/
// synopsys translate_off
`timescale 1 ns / 1 ps
// synopsys translate_on
module led_top(
    led_data
    );
    //******************************************************************************
    //                                 輸入/輸出端口定義
    //******************************************************************************
    output                      led_data;
    
    //******************************************************************************
    //                                     變量定義
    //******************************************************************************
    wire        [63:0]          dout;
    
    //******************************************************************************
    //                                     模塊例化
    //******************************************************************************
    led u_led(
        .din(0),
        .dout(dout)
    );
    
    assign led_data = dout[32];
    
    //******************************************************************************
    
endmodule
//*********************************************文件結束*****************************************************

子模塊:

/**********************************************版權申明*************************************************
**                                   電子技術應用網站, CrazyBird
**
**--------------------------------------------文件信息--------------------------------------------------
** 文件名:          led.v
** 創建者:          CrazyBird
** 創建日期:        2015-8-2
** 版本號:           v1.0
** 功能描述:        對64位的輸入數據取反后輸出
**                   
********************************************************************************************************/
// synopsys translate_off
`timescale 1 ns / 1 ps
// synopsys translate_on
module led(
    din,
    dout
    );
    //******************************************************************************
    //                                 輸入/輸出端口定義
    //******************************************************************************
    input       [63:0]          din;
    output      [63:0]          dout;
    
    //******************************************************************************
    //                                    取反輸出
    //******************************************************************************
    assign  dout = ~din;
    
    //******************************************************************************
    
endmodule
//*********************************************文件結束*****************************************************

modelsim仿真結果:

很顯然,在例化子模塊時對位寬大于32的變量賦0時其實只對低32位賦了0值。

那么這樣的代碼風格對設計實現有沒有影響呢?接著對設計進行綜合后出現以下警告(也提示只對低32位賦了值):

最后對設計進行分配引腳、實現以及生成bit文件并將bit文件下載到紅色颶風開發板上驗證一下,發現led亮了(高電平點亮的),呵呵,一個不定值居然讓led亮了,我不知道硬件是怎么實現的。

(3)第三種:a <= {(DATA_WIDTH){1’b0}}; 其中DATA_WIDTH是經過定義的參數:parameter DATA_WIDTH = 64;對于第三種代碼風格我是極力推薦的,因為它既實現參數化設計,又不會出現第二種代碼風格的情況,具體呢,大家可以親自驗證下,哈哈!


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表