新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 讓Verilog仿真狀態機時可以顯示狀態名

        讓Verilog仿真狀態機時可以顯示狀態名

        作者: 時間:2011-02-28 來源:網絡 收藏
        Situation:
        我們平時使用Verilog進行狀態機編碼時,通常使用parameter對狀態名進行定義,這樣寫Case語句的時候就不會對這一串10摸不著頭腦。可是通常這樣做的話,在Modelsim里看到的還是一串10,使排錯非常困難,特別是在用OneHot編碼的時候,就看到一串0中間的一個1 #_# 簡直要瘋掉。

        Question:
        我們可不可以像VHDL一樣,在仿真的時候看到狀態名字,而不僅僅是狀態編碼呢?

        答案當然是可以的拉,事在人為嘛!

        Solution1:
        另外定義一個reg: state_name,長度根據狀態名稱長度而改變(狀態名稱字符數x8);
        在每個狀態執行的語句中加入state_name = 'IDLE'; 類似的一句語句;
        仿真時添加state_name進行觀察,使用ASCII Radix。

        Solution2:
        使用如下語句:

        代碼:

        `ifdef SIMULATION 
        parameter S_idle = 'idle';
        parameter S_decode = 'decode';
        parameter S_start = 'start ';
        parameter S_wait = 'wait';
        parameter state_wid_msb = 47;
        `else
        parameter S_idle = 4'b0001;
        parameter S_decode = 4'b0010;
        parameter S_start = 4'b0100;
        parameter S_wait = 4'b1000;
        parameter state_wid_msb = 3;
        `endif

        reg [state_wid_msb:0] state;

        只要在仿真的時候`define SIMULATION就可以了。一樣用ASCII Radix查看。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 长宁区| 寿阳县| 安陆市| 金寨县| 兖州市| 读书| 丽水市| 江西省| 获嘉县| 青海省| 郯城县| 马关县| 甘洛县| 开江县| 南和县| 迁安市| 堆龙德庆县| 麻城市| 利川市| 嵊州市| 沁源县| 库车县| 深圳市| 舟山市| 台中市| 安仁县| 赣榆县| 博乐市| 泗阳县| 绵阳市| 通州市| 开阳县| 涞源县| 太仓市| 方城县| 盈江县| 镇沅| 铁岭县| 桦南县| 长海县| 揭阳市|