chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

狀態(tài)機怎么上來就錯了?怎么解決?

冬至子 ? 來源:芯時代青年 ? 作者:尼德蘭的喵 ? 2023-12-04 10:43 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

事故現(xiàn)場

先貼一下代碼的簡版:

localparam S_IDLE    = 4'd0;
localparam S_HEAD    = 4'd1;
localparam S_PAYLOAD = 4'd2;
localparam S_TAIL    = 4'd3;
localparam S_ERROR   = 4'd4;

reg [3:0]status, nx_status;
always @(posedge clk_100m or negedge rst_spt_n)begin
    if(!rst_spt_n) status <= S_IDLE;
    else           status <= nx_status;
end

always @* begin
    case(status)
        S_IDLE: ...
        S_HEAD: ...
        S_PAYLOAD: ...
        S_TAIL: ...
        S_ERROR: ...
        default: nx_status = status;
    endcase
end

狀態(tài)機本身很簡單,default也寫了,然后進行仿真時看到了這樣的波形:

圖片

nx_status仿真初始的值為4'hb,而后導致status的值也為4'hb,始終無法回到IDLE狀態(tài),整個電路的功能也無法正常開展。

事故分析

這個問題得以暴露要感謝在驗證環(huán)境中打開了initreg功能:

CMP_OPTIONS += +vcs+initreg+random
RUN_OPTIONS += +vcs+initreg+$(SEED)

通過這樣的配置使得reg型的數(shù)值在仿真開始時被賦值為隨機數(shù)。該bug就是由于nx_status被賦值為狀態(tài)之外的隨機數(shù)而發(fā)現(xiàn)的。

在代碼中,nx_status沒有任何位置被進行“復位”,當然了因為nx_status本身不是寄存器也就不存在復位的問題,不過狀態(tài)機的alway@*中的處理是有問題的,這導致nx_status一旦跑“飛”了,status下一拍會更新為nx_status的值,那么整個狀態(tài)機將不可恢復。

事故解決

修改狀態(tài)機的寫法為:

always @* begin
    case(status)
        S_IDLE: ...
        S_HEAD: ...
        S_PAYLOAD: ...
        S_TAIL: ...
        S_ERROR: ...
        default: nx_status = S_IDLE;
    endcase
end

或者

always @* begin
    nx_status = S_IDLE;
    case(status)
        S_IDLE: ...
        S_HEAD: ...
        S_PAYLOAD: ...
        S_TAIL: ...
        S_ERROR: ...
        default: nx_status = status;
    endcase
end

重新仿真后波形正確:

圖片

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5587

    瀏覽量

    128993
  • 仿真器
    +關注

    關注

    14

    文章

    1048

    瀏覽量

    86730
  • 狀態(tài)機
    +關注

    關注

    2

    文章

    497

    瀏覽量

    28827
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Verilog狀態(tài)機+設計實例

    在verilog中狀態(tài)機的一種很常用的邏輯結構,學習和理解狀態(tài)機的運行規(guī)律能夠幫助我們更好地書寫代碼,同時作為一種思想方法,在別的代碼設計中也會有所幫助。 一、簡介 在使用過程中我們常說
    的頭像 發(fā)表于 02-12 19:07 ?5877次閱讀
    Verilog<b class='flag-5'>狀態(tài)機</b>+設計實例

    玩轉Spring狀態(tài)機

    說起Spring狀態(tài)機,大家很容易聯(lián)想到這個狀態(tài)機和設計模式中狀態(tài)模式的區(qū)別是啥呢?沒錯,Spring狀態(tài)機就是狀態(tài)模式的一種實現(xiàn),在介紹S
    的頭像 發(fā)表于 06-25 14:21 ?1515次閱讀
    玩轉Spring<b class='flag-5'>狀態(tài)機</b>

    什么是狀態(tài)機?狀態(tài)機的三種實現(xiàn)方法

    文章目錄1、什么是狀態(tài)機?2、狀態(tài)機編程的優(yōu)點(1)提高CPU使用效率(2) 邏輯完備性(3)程序結構清晰3、狀態(tài)機的三種實現(xiàn)方法switch—case 法表格驅動法函數(shù)指針法小節(jié)摘要:不知道大家
    發(fā)表于 12-22 06:51

    如何寫好狀態(tài)機

    如何寫好狀態(tài)機:狀態(tài)機是邏輯設計的重要內容,狀態(tài)機的設計水平直接反應工程師的邏輯功底,所以許多公司的硬件和邏輯工程師面試中,狀態(tài)機設計幾乎是必選題目。本章在引入
    發(fā)表于 06-14 19:24 ?98次下載

    狀態(tài)機舉例

    狀態(tài)機舉例 你可以指定狀態(tài)寄存器和狀態(tài)機狀態(tài)。以下是一個有四種狀態(tài)的普通狀態(tài)機。 // Th
    發(fā)表于 03-28 15:18 ?1170次閱讀

    狀態(tài)機代碼生成工具

    狀態(tài)機代碼生成工具狀態(tài)機代碼生成工具狀態(tài)機代碼生成工具狀態(tài)機代碼生成工具
    發(fā)表于 11-19 15:12 ?9次下載

    狀態(tài)機原理及用法

    狀態(tài)機原理及用法狀態(tài)機原理及用法狀態(tài)機原理及用法
    發(fā)表于 03-15 15:25 ?0次下載

    簡述使用QII狀態(tài)機向導如何創(chuàng)建一個狀態(tài)機

    如何使用QII狀態(tài)機向導創(chuàng)建一個狀態(tài)機
    的頭像 發(fā)表于 06-20 00:11 ?4817次閱讀
    簡述使用QII<b class='flag-5'>狀態(tài)機</b>向導如何創(chuàng)建一個<b class='flag-5'>狀態(tài)機</b>

    狀態(tài)機概述 如何理解狀態(tài)機

    本篇文章包括狀態(tài)機的基本概述以及通過簡單的實例理解狀態(tài)機
    的頭像 發(fā)表于 01-02 18:03 ?1.1w次閱讀
    <b class='flag-5'>狀態(tài)機</b>概述  如何理解<b class='flag-5'>狀態(tài)機</b>

    什么是狀態(tài)機 狀態(tài)機的描述三種方法

    狀態(tài)機 1、狀態(tài)機是許多數(shù)字系統(tǒng)的核心部件,是一類重要的時序邏輯電路。通常包括三個部分:一是下一個狀態(tài)的邏輯電路,二是存儲狀態(tài)機當前狀態(tài)的時
    的頭像 發(fā)表于 11-16 17:39 ?2.8w次閱讀

    FPGA:狀態(tài)機簡述

    本文目錄 前言 狀態(tài)機簡介 狀態(tài)機分類 Mealy 型狀態(tài)機 Moore 型狀態(tài)機 狀態(tài)機描述 一段式
    的頭像 發(fā)表于 11-05 17:58 ?8611次閱讀
    FPGA:<b class='flag-5'>狀態(tài)機</b>簡述

    什么是狀態(tài)機?狀態(tài)機5要素

    玩單片還可以,各個外設也都會驅動,但是如果讓你完整的寫一套代碼時,卻無邏輯與框架可言。這說明編程還處于比較低的水平,你需要學會一種好的編程框架或者一種編程思想!比如模塊化編程、狀態(tài)機編程、分層思想
    的頭像 發(fā)表于 07-27 11:23 ?2.2w次閱讀
    什么是<b class='flag-5'>狀態(tài)機</b>?<b class='flag-5'>狀態(tài)機</b>5要素

    狀態(tài)模式(狀態(tài)機)

    以前寫狀態(tài)機,比較常用的方式是用 if-else 或 switch-case,高級的一點是函數(shù)指針列表。最近,看了一文章《c語言設計模式–狀態(tài)模式(狀態(tài)機)》(來源:embed linux
    發(fā)表于 12-16 16:53 ?9次下載
    <b class='flag-5'>狀態(tài)</b>模式(<b class='flag-5'>狀態(tài)機</b>)

    labview狀態(tài)機分享

    labview狀態(tài)機
    發(fā)表于 10-31 15:50 ?20次下載

    什么是狀態(tài)機?狀態(tài)機的種類與實現(xiàn)

    狀態(tài)機,又稱有限狀態(tài)機(Finite State Machine,F(xiàn)SM)或米利狀態(tài)機(Mealy Machine),是一種描述系統(tǒng)狀態(tài)變化的模型。在芯片設計中,
    的頭像 發(fā)表于 10-19 10:27 ?1.3w次閱讀