色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

一位FPGA工程師的工作日常

工程師人生 ? 來源:FPGA之家 ? 作者:FPGA之家 ? 2020-11-30 12:03 ? 次閱讀

在正式開始之前,我們先看看一位FPGA工程師的工作日常:

開始設計代碼
開始寫第一個always代碼
發現要增加一個信號,因此寫第二個always,設計這個新增的信號
回到第一個always上,繼續完善這個代碼
開始寫第三個always代碼
感覺第一個always有情況沒考慮到
一陣重新思考
回去修改第一個always的代碼
寫完后,得了,不檢查代碼了,仿真再說吧。

仿真過程
每個時鐘上升沿一個一個檢查
發現這時某信號沒有變高
檢查代碼,把BUG補上
繼續檢查波形,繼續補BUG
發現信號A和B時序對不齊
思考是打補丁呢還是打補丁呢
是改這個信號呢,還是改那個信號,還是加一個信號
一番折騰后,終于對齊了
修改測試文件,再測試
還是有BUG,繼續打補丁

該上板調試了
系統跑一會沒問題,長時間跑就出BUG
用調試工具各種分析各種定位
一番折騰后,終于找到BUG
一個corner沒想到/粗心大意漏了個條件/
早知道,要沒這BUG,我早就做完了

又出現BUG了,又要來折騰啦。

這個場景是不是覺得很熟悉?還有下面這些情形也許都遇到過:一個項目看上去很簡單,精心設置了架構,結果越做發現沖突越多,直到整個邏輯完全混亂。本來一天可以的完成的事不知道怎么搞的一個星期還沒有完成;本來只需要做一行更改,結果卻涉及到N個模塊;出現了一個非常小的BUG打了一個補丁,然后補丁越來越多,到最后無法解決。諸如此類等等情況不一而足,究其原因,總離不開“混亂”兩個字。這些混亂的根源是什么?又該如何解決呢?

一個好的FPGA項目的設計作品,不僅依賴于架構設計,優秀的代碼也是必不可少的關鍵因素。而好的代碼最基本的就是清晰整潔。整潔的代碼運行穩定,也是后期維護和升級的基礎。正如C++語言發明者Bjarne Stroustrup說的那樣:“代碼邏輯應當直截了當,叫缺陷難以隱藏;盡量減少依賴關系,使之便于維護;依據某種分層戰略完善錯誤處理代碼;性能調至最優,避免其他人優化時不知所措從而出現混亂狀態。整潔的代碼只做好一件事。”

這段話說得實在太好了,整潔的代碼只去做好一件事。事實上,有兩點只要做到了,就可以大大提高自己代碼的整潔度。第一、寫簡單的代碼;第二、把復雜的代碼簡單化。下面我們通過一個小的實例來說明一下。我們先來看這樣一組代碼:

always @(posedge clk or negedge rst_n)begin

if(rst_n==1'b0)begin

shi_ge

end

else if(((set_flag == 1'b1 && set_sel == 4)&& (key_vld == 1 && key_num == 4'b0010)) || shi_ge_add)begin

if(shi_shi ==2 && shi_ge == 3)begin

shi_ge

end

else if((shi_shi == 0 || shi_shi ==1) && shi_ge == 9)begin

shi_ge

end

else begin

shi_ge

end

end

end

這個程序時一個數字時鐘功能的其中一份關于小時個位的代碼。小時個位復位等于0(第3行代碼);設置的語句(第5行代碼),意思是當你選中小時的個位并且按鍵按下去,小時個位+1,或者說正常情況下一個小時+1。這里需要注意的是:首先小時的計數方式在0:00——9:00,10:00——19:00,20:00——23:00情況下+1;另外幾個時間點清零。

我們來分析一下,在這份代碼的設計中需要考慮到很多因素。第一、需要考慮按鍵;第二、按下去時與正常計數的關系;第三、需要數多少次清零,比如說9點、19點、23點清零;當很多因素混在一起去考慮,特別是格式沒有被規范的時候,就容易出現混亂、遺漏點或是相互之間出現沖突,出錯的可能性隨之變大。

接下來我們來看另外一組代碼的思路和操作。

首先,我們建立一個通用的計數器模板,命名為jsq。每次遇到計數器,只需要輸入JSq,即可調入該模板。(注:關于模板的設置以后章節介紹)

always @(posedge clk or negedge rst_n)begin

if(!rst_n)begin

cnt

end

else if(add_cnt)begin

if(end_cnt)

cnt

else

cnt

end

end

assign add_cnt = ;

assign end_cnt = add_cnt && cnt== ;

接下來設置什么時候個位+1,分為兩種情況:1、按鍵按下去;2、自然計數+1;(第13行)

采用變量法設置X-1;即先不用去管數多少下,反正數完就清零;(第14行)

最后我們設置數多少下。20:00時數4下;其它時候數10下;(16~21行)

always @(posedge clk or negedge rst_n)begin

if(!rst_n)begin

cnt

end

else if(add_cnt)begin

if(end_cnt)

cnt

else

cnt

end

end

assign add_cnt =((set_flag == 1'b1 && set_sel == 4)&& (key_vld == 1 && key_num == 4'b0010)) || shi_ge_add ;

assign end_cnt = add_cnt && cnt== x-1 ;

always @(*)begin

if(shi_s == 2)

x = 4 ;

else

x = 10 ;

end

現在我們來回顧一下這段代碼,從中不難發現,設計的總體思路有著嚴密的邏輯和步驟,并采取了便捷工具(模板)來規范了代碼編寫,減少了設計量。最重要的是設計者的意圖清晰了然,控制語句直截了當,代碼之間相互依賴性非常低,作者之外的開發者閱讀和增補非常輕松。

這一節我們講到了代碼混亂的根源及解決這個問題的技巧,下一節我們要講到的是簡單代碼規則的技巧。

編輯:hfy


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

    關注

    1630

    文章

    21791

    瀏覽量

    605094
  • 工程師
    +關注

    關注

    59

    文章

    1571

    瀏覽量

    68590
收藏 人收藏

    評論

    相關推薦

    硬件工程師工作前VS工作后!抱歉!是我想的太簡單了!# #電工 #電子愛好者

    硬件工程師
    MDD辰達半導體
    發布于 :2025年01月08日 18:15:18

    硬件工程師工作必備書籍推薦

    硬件工程師工作必備書籍推薦
    的頭像 發表于 09-24 16:07 ?982次閱讀
    硬件<b class='flag-5'>工程師</b>找<b class='flag-5'>工作</b>必備書籍推薦

    FPGA算法工程師、邏輯工程師、原型驗證工程師有什么區別?

    邏輯工程師FPGA 原型驗證工程師工作重點和職責上存在定的區別: FPGA 算法
    發表于 09-23 18:26

    尋求專業工程師幫助設計USB多口充電器

    嗨, 我正在開發款USB多口充電器,現尋求一位專業工程師或產品設計的幫助。希望能夠與有經驗的工程師合作,共同完成產品設計。以下是我們的需
    發表于 08-05 12:03

    嵌入式軟件工程師如何提升自己?

    ,可以為自己的職業生涯打下堅實的基礎,并實現個人的職業目標。愿每一位嵌入式軟件工程師都能在這個充滿挑戰和機遇的領域中取得成功!
    發表于 06-12 11:20

    嵌入式軟件工程師和硬件工程師的區別?

    和通信協議,以及熟練掌握種或多種編程語言和開發工具。 主要負責的任務和領域 嵌入式軟件工程師工作涉及到各種任務,主要包括: * 系統設計:包括確定系統功能、分配資源、優化性能等。 * 軟件編程:包括編程
    發表于 05-16 11:00

    大廠電子工程師常見面試題#電子工程師 #硬件工程師 #電路知識 #面試題

    電子工程師電路
    安泰小課堂
    發布于 :2024年04月30日 17:33:15

    為何國外工程師偏愛使用for(;;)來實現MCU死循環?

    一位工程師發現,國外工程師在給demo在做死循環時用的是for(;;),而不是常用的while(1)。這僅僅是個人習慣的問題,還是有更深層次的含義?
    發表于 04-01 11:26 ?700次閱讀
    為何國外<b class='flag-5'>工程師</b>偏愛使用for(;;)來實現MCU死循環?

    fpga工程師前景如何

    FPGA工程師的前景看起來相當積極和廣闊。隨著5G通信、物聯網、邊緣計算和人工智能等技術的快速發展,FPGA工程師的需求將進步增加。
    的頭像 發表于 03-14 16:32 ?3239次閱讀

    fpga工程師就業趨勢

    FPGA工程師的就業趨勢呈現出積極的態勢。隨著科技的發展,FPGA(現場可編程門陣列)在通信、汽車、醫療、航空航天等領域的應用越來越廣泛,對FPGA
    的頭像 發表于 03-14 15:47 ?1629次閱讀
    主站蜘蛛池模板: 2012中文字幕手机在线| 欧美视频 亚洲视频| 国产亚洲精品久久77777| 久啪久久全部视频在线| 色婷婷粉嫩AV精品综合在线| 亚洲免费视频在线观看| 99久久99久久久精品齐齐鬼色| 国产产乱码一二三区别免费| 久久无码人妻中文国产| 天天影视色欲 影视| 97国产视频| 国内精品久久久久久西瓜色吧| 欧美中文字幕一区二区三区| 亚洲无遮挡| 国产浮力草草影院CCYY| 青青草原影视| 99re2.久久热最新地址| 久久精品热线免费| 羞羞一区二区三区四区片| 超碰97人人做人人爱少妇| 美女被撕开胸罩狂揉大乳| 亚洲日本香蕉视频观看视频| 国产成人在线视频网站| 强行撕开衣服捏胸黄文| 中文字幕亚洲第一页| 好姑娘社区在线视频| 天天国产在线精品亚洲| 钉钉女老师| 轻点灬大ji巴太粗太双性高h| 91精品乱码一区二区三区| 久在线观看福利视频| 在线视频av大全色久久| 果冻传媒在线观看资源七夕| 午夜福利网国产A| 国产精品久久久久秋霞影视| 色综合欧美色综合七久久| 丰满五十六十老熟女HD60| 日韩人妻双飞无码精品久久| 波多结衣一区二区三区| 日本xxxx裸体xxxx| 超碰视频在线观看|