久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2870|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美一区二区在线观看视频 | 一区二区视频免费观看 | 国产精品久久精品 | 成人免费视频观看 | 国产精品免费一区二区三区四区 | 亚洲国产精品一区二区www | 欧美日韩中文在线 | 亚洲视频在线免费 | 国产成人精品一区二区三区在线 | 综合久久99 | 性高湖久久久久久久久aaaaa | 久久精品色欧美aⅴ一区二区 | 五月婷婷激情网 | 国产精品成人品 | 国产在线视频一区 | 久久国产精99精产国高潮 | 香蕉久久网 | 日本手机在线 | 精品免费国产一区二区三区 | 在线成人免费观看 | 久久综合成人精品亚洲另类欧美 | 日韩看片| 欧洲免费毛片 | 欧美日韩成人 | 国产精品久久久久久久久图文区 | 亚洲理论在线观看电影 | 成人在线免费av | 日韩欧美一区二区三区 | 欧美不卡视频一区发布 | 亚洲欧美综合 | 日韩一区二区福利视频 | 国产在线观看网站 | 日韩av在线一区二区三区 | 美女一区二区在线观看 | 综合国产第二页 | 久草中文在线 | 美女久久久久久久久 | 亚洲视频中文字幕 | 国产在线一区二 | 91精品国产欧美一区二区成人 | 国产中文一区二区三区 |