91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一位FPGA工程師的工作日常

工程師人生 ? 來(lái)源:FPGA之家 ? 作者:FPGA之家 ? 2020-11-30 12:03 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

開始設(shè)計(jì)代碼
開始寫第一個(gè)always代碼
發(fā)現(xiàn)要增加一個(gè)信號(hào),因此寫第二個(gè)always,設(shè)計(jì)這個(gè)新增的信號(hào)
回到第一個(gè)always上,繼續(xù)完善這個(gè)代碼
開始寫第三個(gè)always代碼
感覺第一個(gè)always有情況沒考慮到
一陣重新思考
回去修改第一個(gè)always的代碼
寫完后,得了,不檢查代碼了,仿真再說(shuō)吧。

仿真過(guò)程
每個(gè)時(shí)鐘上升沿一個(gè)一個(gè)檢查
發(fā)現(xiàn)這時(shí)某信號(hào)沒有變高
檢查代碼,把BUG補(bǔ)上
繼續(xù)檢查波形,繼續(xù)補(bǔ)BUG
發(fā)現(xiàn)信號(hào)A和B時(shí)序?qū)Σ积R
思考是打補(bǔ)丁呢還是打補(bǔ)丁呢
是改這個(gè)信號(hào)呢,還是改那個(gè)信號(hào),還是加一個(gè)信號(hào)
一番折騰后,終于對(duì)齊了
修改測(cè)試文件,再測(cè)試
還是有BUG,繼續(xù)打補(bǔ)丁

該上板調(diào)試了
系統(tǒng)跑一會(huì)沒問(wèn)題,長(zhǎng)時(shí)間跑就出BUG
用調(diào)試工具各種分析各種定位
一番折騰后,終于找到BUG
一個(gè)corner沒想到/粗心大意漏了個(gè)條件/
早知道,要沒這BUG,我早就做完了

又出現(xiàn)BUG了,又要來(lái)折騰啦。

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

一個(gè)好的FPGA項(xiàng)目的設(shè)計(jì)作品,不僅依賴于架構(gòu)設(shè)計(jì),優(yōu)秀的代碼也是必不可少的關(guān)鍵因素。而好的代碼最基本的就是清晰整潔。整潔的代碼運(yùn)行穩(wěn)定,也是后期維護(hù)和升級(jí)的基礎(chǔ)。正如C++語(yǔ)言發(fā)明者Bjarne Stroustrup說(shuō)的那樣:“代碼邏輯應(yīng)當(dāng)直截了當(dāng),叫缺陷難以隱藏;盡量減少依賴關(guān)系,使之便于維護(hù);依據(jù)某種分層戰(zhàn)略完善錯(cuò)誤處理代碼;性能調(diào)至最優(yōu),避免其他人優(yōu)化時(shí)不知所措從而出現(xiàn)混亂狀態(tài)。整潔的代碼只做好一件事?!?/p>

這段話說(shuō)得實(shí)在太好了,整潔的代碼只去做好一件事。事實(shí)上,有兩點(diǎn)只要做到了,就可以大大提高自己代碼的整潔度。第一、寫簡(jiǎn)單的代碼;第二、把復(fù)雜的代碼簡(jiǎn)單化。下面我們通過(guò)一個(gè)小的實(shí)例來(lái)說(shuō)明一下。我們先來(lái)看這樣一組代碼:

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

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

我們來(lái)分析一下,在這份代碼的設(shè)計(jì)中需要考慮到很多因素。第一、需要考慮按鍵;第二、按下去時(shí)與正常計(jì)數(shù)的關(guān)系;第三、需要數(shù)多少次清零,比如說(shuō)9點(diǎn)、19點(diǎn)、23點(diǎn)清零;當(dāng)很多因素混在一起去考慮,特別是格式?jīng)]有被規(guī)范的時(shí)候,就容易出現(xiàn)混亂、遺漏點(diǎn)或是相互之間出現(xiàn)沖突,出錯(cuò)的可能性隨之變大。

接下來(lái)我們來(lái)看另外一組代碼的思路和操作。

首先,我們建立一個(gè)通用的計(jì)數(shù)器模板,命名為jsq。每次遇到計(jì)數(shù)器,只需要輸入JSq,即可調(diào)入該模板。(注:關(guān)于模板的設(shè)置以后章節(jié)介紹)

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== ;

接下來(lái)設(shè)置什么時(shí)候個(gè)位+1,分為兩種情況:1、按鍵按下去;2、自然計(jì)數(shù)+1;(第13行)

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

最后我們?cè)O(shè)置數(shù)多少下。20:00時(shí)數(shù)4下;其它時(shí)候數(shù)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

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

這一節(jié)我們講到了代碼混亂的根源及解決這個(gè)問(wèn)題的技巧,下一節(jié)我們要講到的是簡(jiǎn)單代碼規(guī)則的技巧。

編輯:hfy


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1660

    文章

    22416

    瀏覽量

    636614
  • 工程師
    +關(guān)注

    關(guān)注

    59

    文章

    1603

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    硬件工程師甩鍋排行榜 #電子 #電子工程師 #硬件工程師 #甩鍋的各種理由 #揚(yáng)興科技

    硬件工程師
    揚(yáng)興科技
    發(fā)布于 :2026年03月06日 18:30:55

    電子工程師的雙標(biāo)瞬間 #電子 #電子愛好者 #電子工程師 #揚(yáng)興科技 #雙標(biāo)

    電子工程師
    揚(yáng)興科技
    發(fā)布于 :2026年03月02日 18:04:13

    什么是BSP工程師

    任何軟件的。BSP工程師需要結(jié)合硬件原理圖修改從芯片廠商拿到的參考代碼,調(diào)試板子,使板子上的操作系統(tǒng)能夠正常穩(wěn)定工作,從而提供個(gè)穩(wěn)定的開發(fā)調(diào)試環(huán)境,這個(gè)過(guò)程叫做點(diǎn)亮板子,行話叫做Bringup。這
    發(fā)表于 01-13 06:54

    不同薪資對(duì)工作的態(tài)度 #硬件工程師 #電子愛好者 #打工人 #搞笑 #揚(yáng)興科技

    硬件工程師
    揚(yáng)興科技
    發(fā)布于 :2026年01月12日 18:08:22

    這句話用在哪里都合適 #硬件工程師 #電子愛好者 #工作日常 #內(nèi)容過(guò)于真實(shí)

    硬件工程師
    揚(yáng)興科技
    發(fā)布于 :2025年10月17日 18:20:17

    電子發(fā)燒友工程師看!電子領(lǐng)域評(píng)職稱,技術(shù)之路更扎實(shí)

    。比如一位電源工程師,評(píng)職稱前主要做基礎(chǔ)電源調(diào)試;評(píng)上 “高級(jí)電源工程師” 后,受邀參與電子發(fā)燒友 “電源技術(shù)研討會(huì)” 做分享,還接到廠商委托的高功率密度電源開發(fā)項(xiàng)目,項(xiàng)目成果被平臺(tái)推薦為 “年度技術(shù)
    發(fā)表于 08-20 13:53

    【華秋DFM】V4.6正式上線:工程師的PCB設(shè)計(jì)“好搭子”來(lái)了!

    款軟件,更 是每一位工程師背后的“隱形助手” 。從設(shè)計(jì)之初的風(fēng)險(xiǎn)排查,到制造階段的成本控制,再到裝配環(huán)節(jié)的細(xì)節(jié)優(yōu)化,我們始終致力于為工程師們提供更專業(yè)、更智能、更貼心的服務(wù)。 未來(lái),
    發(fā)表于 05-22 16:07

    問(wèn),成為硬件工程師需要幾只手?#硬件工程師 #YXC晶振 #揚(yáng)興科技 #搞笑

    硬件工程師
    揚(yáng)興科技
    發(fā)布于 :2025年04月25日 17:15:37

    硬件工程師:回答我!#回答我 #硬件工程師 #YXC晶振 #揚(yáng)興科技

    硬件工程師
    揚(yáng)興科技
    發(fā)布于 :2025年03月25日 18:46:59

    招拿捏電子工程師#被AI拿捏了 #電子工程師 #電子電工

    電子工程師
    安泰小課堂
    發(fā)布于 :2025年03月25日 17:30:51

    一位老電子工程師的十年職場(chǎng)感悟

    這里主要以個(gè)人經(jīng)歷談?wù)勲娮?b class='flag-5'>工程師技術(shù)生涯可能面臨的困惑、關(guān)心的問(wèn)題以及對(duì)未來(lái)的期待。Chrent新手感興趣的問(wèn)題1、電子工程師矛盾心態(tài)——電子新手新沒事做,沒人教,工作沒有技術(shù)含量?電子新手往往
    的頭像 發(fā)表于 03-19 17:32 ?897次閱讀
    <b class='flag-5'>一位</b>老電子<b class='flag-5'>工程師</b>的十年職場(chǎng)感悟