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

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

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

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

Verilog如何做到心中有電路?

倩倩 ? 來(lái)源:IP與SoC設(shè)計(jì) ? 作者:IP與SoC設(shè)計(jì) ? 2022-08-31 14:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

老師說(shuō)沒(méi)電路就不要寫(xiě)代碼,但我寫(xiě)個(gè)乘法器在綜合前都想不出它電路啥樣,全加器還行,寫(xiě)Verilog如何做到心中有電路?

首先,你們老師說(shuō)的是正確的,但可能是說(shuō)的不夠詳細(xì),或者你表達(dá)的不全。

準(zhǔn)確的說(shuō),在寫(xiě)Verilog前,要做到心中有數(shù)字電路。

數(shù)字電路設(shè)計(jì)主要就是,選擇器、全加器、比較器,乘法器,幾個(gè)常用邏輯門(mén),再加個(gè)D觸發(fā)器,電路基本都能實(shí)現(xiàn)了。這些器作為基本單元,對(duì)于工程設(shè)計(jì)來(lái)說(shuō),并不需要過(guò)多的關(guān)注它更底層的門(mén)或晶體管的樣子。

我在學(xué)生時(shí)代剛開(kāi)始學(xué)數(shù)字電路設(shè)計(jì)的時(shí)候,很長(zhǎng)一段時(shí)間都是眼里只有代碼和功能時(shí)序,沒(méi)有一個(gè)良好的正向設(shè)計(jì)思路。比如,知道要實(shí)現(xiàn)的功能,二話(huà)不說(shuō)開(kāi)始新建.v寫(xiě)代碼,邊寫(xiě)邊想,這樣導(dǎo)致的結(jié)果,準(zhǔn)確的來(lái)說(shuō)時(shí)序都是調(diào)出來(lái)的,而不是設(shè)計(jì)出來(lái)的。

寫(xiě)的代碼幾乎全使用


		

always @(posedge clk or negedge rst_n)

從不考慮消耗的資源和面積,學(xué)生階段的項(xiàng)目用FPGA也很難把芯片資源用爆,全用的寄存器肯定不會(huì)出現(xiàn)時(shí)序不滿(mǎn)足的情況。

而實(shí)際上做設(shè)計(jì)最應(yīng)該關(guān)注的是PPA(Performance, Power, Area),寄存器多面積必然大,處理必然延時(shí)大,功耗怎么小。寄存器打拍是因?yàn)榻M合邏輯路徑過(guò)長(zhǎng),才往中間插一拍,而不是隨便打。

在寫(xiě)Verilog前,不光要心中有電路,還要有關(guān)鍵時(shí)序圖,有一個(gè)硬件的詳細(xì)設(shè)計(jì)方案。而且不光在心里,還得寫(xiě)下來(lái),畫(huà)下來(lái),整理成文檔。在動(dòng)手寫(xiě)代碼前,心中就有了譜,清楚的知道,我這個(gè)設(shè)計(jì)能成。

而一個(gè)正確的正向設(shè)計(jì)流程應(yīng)該是,首先確定設(shè)計(jì)模塊的功能需求,劃分整體的硬件結(jié)構(gòu),可以大致分為幾個(gè)部分。每一個(gè)部分實(shí)現(xiàn)一個(gè)獨(dú)立的功能,不同部分之間接口交互確定。

設(shè)計(jì)分為數(shù)據(jù)通路和控制通路。

數(shù)據(jù)通路決定了整體數(shù)據(jù)流的走向,整個(gè)模塊計(jì)算分為哪幾部分,哪些是可以排成流水線,中間的數(shù)據(jù)流是否需要斷掉,用RAM存還是RegFile存儲(chǔ)。數(shù)據(jù)通路中數(shù)乘法器單元的面積最大,一般都是采用的是分時(shí)復(fù)用的方式。整個(gè)數(shù)據(jù)通路的計(jì)算流整理出來(lái)后,基本上乘法的最大個(gè)數(shù)也統(tǒng)計(jì)出來(lái),然后控制計(jì)算模塊在不同的時(shí)間復(fù)用。乘法器的數(shù)量和復(fù)用程度決定了一個(gè)設(shè)計(jì)是否更優(yōu),好的設(shè)計(jì)是整個(gè)數(shù)據(jù)通路中乘法器幾乎空閑不下來(lái)。

到了單個(gè)計(jì)算模塊,每個(gè)模塊都能畫(huà)出一個(gè)簡(jiǎn)單的計(jì)算電路圖,

d815a95a-28e2-11ed-ba43-dac502259ad0.png

上面這個(gè)圖的意思是,a * b或c * d的結(jié)果進(jìn)行累加,最后飽和截位進(jìn)行輸出。

畫(huà)出了電路圖,就可以大體估算出,整個(gè)設(shè)計(jì)需要的寄存器的數(shù)量,乘法器的數(shù)據(jù)。乘法器和寄存器的量級(jí)估算基本上就可以確定整個(gè)設(shè)計(jì)的面積單位量級(jí)。

控制通路就是玩時(shí)序設(shè)計(jì),畫(huà)出時(shí)序圖,具體的實(shí)現(xiàn)就是各種大大小小的計(jì)數(shù)器、enable、start、end、valid、flag信號(hào)。系統(tǒng)整體的調(diào)度,就記住一句話(huà),狀態(tài)機(jī)大法好。當(dāng)然雖然說(shuō)狀態(tài)機(jī)可以實(shí)現(xiàn)一切時(shí)序電路,但并不是所以時(shí)序功能都適合用狀態(tài)機(jī)。比如,整個(gè)設(shè)計(jì)的處理都是連續(xù)流水處理,那么對(duì)于狀態(tài)機(jī)的來(lái)說(shuō)就是一個(gè)狀態(tài),不需要用狀態(tài)機(jī)了。

控制通路的設(shè)計(jì)就不是畫(huà)電路圖了,而是畫(huà)時(shí)序圖,狀態(tài)機(jī)的跳轉(zhuǎn),各種控制信號(hào)的時(shí)序交互,握手,ram的讀寫(xiě)控制等等關(guān)鍵時(shí)序圖,都需要畫(huà)出來(lái)??刂仆飞系馁Y源占比很少,一個(gè)10bit的計(jì)數(shù)器就可以計(jì)到1023,一個(gè)數(shù)據(jù)打拍就32bit,各種flag就1bit,更不值一提。所以設(shè)計(jì)中評(píng)估資源和優(yōu)化主要關(guān)注的數(shù)據(jù)通路。

數(shù)據(jù)通路和控制通路整理完成后,整個(gè)設(shè)計(jì)的處理時(shí)間和占用資源基本上就可以估算出來(lái)。上面的工作都完成后,然后就是照?qǐng)D施工,你會(huì)發(fā)現(xiàn),寫(xiě)代碼就完全是個(gè)體力活的事情。只要你方案設(shè)計(jì)的好,圖畫(huà)的好,文檔寫(xiě)的清晰,隨便找?guī)讉€(gè)會(huì)寫(xiě)Verilog的代碼都能寫(xiě)出來(lái)(夸張的表述)。

回到我們說(shuō)的Verilog HDL的HDL的全稱(chēng)是Hardware Description language,是硬件描述語(yǔ)言,不是design,是在描述之前,你就得想好要描述的東西。做設(shè)計(jì)的時(shí)候按照這樣的思路和套路去想,去做。

再來(lái)說(shuō)說(shuō)做設(shè)計(jì)時(shí)的描述方式,一些更底層的描述方式,比如

&sel[1:0] 等效于 sel[1:0] == 2'b11

~(|sel[1:0])等效于 sel[1:0] == 2'b0

~a[3:0] + 1'b1 等效于 -a[3:0]

c[4:0] = {a[3], a[3:0]} + {b[3], b[3:0]}等效于c[4:0] = $signed(a[3:0]+b[3:0]

變量乘以一個(gè)常數(shù)用移位加


		

assign data_out[5:0] = ({6{data_vld0}} & data0[5:0]) | ({6{data_vld1}} & data1[5:0]) | ({6{data_vld2}} & data2[5:0]) | ({6{data_vld3}} & data3[5:0]);

這是一個(gè)4選1的數(shù)據(jù)選擇器,并且要求四個(gè)vld不能同時(shí)為1。

實(shí)際上,拋開(kāi)代碼的可讀性,很多代碼的寫(xiě)法,并不需要多此一舉用更底層的描述方法,高級(jí)的描述只要語(yǔ)法和工具支持,就可以直接使用,更底層的描述,我們以為會(huì)用更少邏輯,但是工具可能也會(huì)優(yōu)化的更好,比如,變量乘以常數(shù),a * 2‘d3,工具會(huì)幫你優(yōu)化成 a << 2’d1 + a。甚至可能還優(yōu)化得更好,所以還不如直接用乘法器,*號(hào)。

當(dāng)然也不能過(guò)分依賴(lài)工具,能復(fù)用的邏輯盡量復(fù)用,先選后比,先選后加,先選后乘。畢竟自己寫(xiě)出來(lái)的邏輯是確定的,而交給工具并不一定會(huì)按你想的方向去優(yōu)化綜合。而做一個(gè)設(shè)計(jì)在確保代碼功能實(shí)現(xiàn)的前提下,還需要考慮的是代碼可調(diào)試性和可維護(hù)性。

最后再扯一段我用過(guò)好幾次的話(huà)

學(xué)習(xí)Verilog的五個(gè)階段

00:心中無(wú)電路,代碼無(wú)電路

01:心中有電路,代碼無(wú)電路

10:心中有電路,代碼有電路

11:心中無(wú)電路,代碼有電路

00:心中無(wú)電路,代碼無(wú)電路

達(dá)到10就可以了,這時(shí)候你就是高手了,再往后就開(kāi)始玩玄學(xué)了。

歡迎糾正,歡迎補(bǔ)充。

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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)投訴
  • 電路
    +關(guān)注

    關(guān)注

    173

    文章

    6065

    瀏覽量

    177637
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5590

    瀏覽量

    129248
  • Verilog
    +關(guān)注

    關(guān)注

    30

    文章

    1371

    瀏覽量

    114217

原文標(biāo)題:寫(xiě)Verilog如何做到心中有電路?

文章出處:【微信號(hào):IP與SoC設(shè)計(jì),微信公眾號(hào):IP與SoC設(shè)計(jì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    使用NucleiStudio生成tb仿真需要的.verilog文件

    打開(kāi)仿真頂層文件tb_top.v,存放在ITCM模塊里面的指令是通過(guò)readmemh函數(shù)讀入.verilog文件實(shí)現(xiàn)的: 下面通過(guò)對(duì)NucleiStudio IDE進(jìn)行設(shè)置,實(shí)現(xiàn)將c
    發(fā)表于 11-05 07:07

    PCIe協(xié)議分析儀在數(shù)據(jù)中心中有何作用?

    PCIe協(xié)議分析儀在數(shù)據(jù)中心中扮演著至關(guān)重要的角色,它通過(guò)深度解析PCIe總線的物理層、鏈路層、事務(wù)層及應(yīng)用層協(xié)議,幫助運(yùn)維人員、硬件工程師和系統(tǒng)架構(gòu)師優(yōu)化性能、診斷故障、驗(yàn)證設(shè)計(jì)合規(guī)性,并提
    發(fā)表于 07-29 15:02

    無(wú)感考勤如何做到“無(wú)懈可擊”?

    無(wú)感考勤的核心價(jià)值,在于用技術(shù)賦能管理。四維慧眼通過(guò)精準(zhǔn)識(shí)別、本地化部署與開(kāi)放生態(tài),為系統(tǒng)集成商和工程商提供高適配、易落地的解決方案,幫助企業(yè)實(shí)現(xiàn)效率與體驗(yàn)的雙重升級(jí)。
    的頭像 發(fā)表于 07-17 18:03 ?460次閱讀

    verilog模塊的調(diào)用、任務(wù)和函數(shù)

    在做模塊劃分時(shí),通常會(huì)出現(xiàn)這種情形,某個(gè)大的模塊中包含了一個(gè)或多個(gè)功能子模塊,verilog是通過(guò)模塊調(diào)用或稱(chēng)為模塊實(shí)例化的方式來(lái)實(shí)現(xiàn)這些子模塊與高層模塊的連接的.
    的頭像 發(fā)表于 05-03 10:29 ?1328次閱讀
    <b class='flag-5'>verilog</b>模塊的調(diào)用、任務(wù)和函數(shù)

    請(qǐng)問(wèn)LT系列穩(wěn)壓器和LM系列穩(wěn)壓器的區(qū)別是什么?

    常見(jiàn)的線性穩(wěn)壓器LT系列和LM系列,為什么LT系列支持并聯(lián)輸出而LM系列不支持并聯(lián)輸出,從內(nèi)部電路原理分析主三極管、參考電壓電路、負(fù)載之間的關(guān)系? 并且針對(duì)輸出并聯(lián)如何做到輸出均流?
    發(fā)表于 04-17 07:20

    FPGA Verilog HDL語(yǔ)法之編譯預(yù)處理

    Verilog HDL語(yǔ)言和C語(yǔ)言一樣也提供了編譯預(yù)處理的功能?!熬幾g預(yù)處理”是Verilog HDL編譯系統(tǒng)的一個(gè)組成部分。Verilog HDL語(yǔ)言允許在程序中使用幾種特殊的命令(它們不是一般
    的頭像 發(fā)表于 03-27 13:30 ?1136次閱讀
    FPGA <b class='flag-5'>Verilog</b> HDL語(yǔ)法之編譯預(yù)處理

    一文詳解Verilog HDL

    Verilog HDL(Hardware Description Language)是一種硬件描述語(yǔ)言,用于從算法級(jí)、門(mén)級(jí)到開(kāi)關(guān)級(jí)的多種抽象設(shè)計(jì)層次的數(shù)字系統(tǒng)建?!,F(xiàn)實(shí)生活中多用于專(zhuān)用集成電路
    的頭像 發(fā)表于 03-17 15:17 ?3878次閱讀
    一文詳解<b class='flag-5'>Verilog</b> HDL

    尋找verilog高手,有報(bào)酬

    我采集了一塊電路板正常工作時(shí)的數(shù)據(jù),基于這些數(shù)據(jù)我想用EPM7128slc84-15(sys_clk:50Mhz)測(cè)試電路板,尋求一位verilog高手,有償
    發(fā)表于 03-08 16:31

    Verilog中signed和$signed()的用法

    1、在verilog中有時(shí)會(huì)用signed修飾符來(lái)修飾定義的數(shù)據(jù),運(yùn)算的時(shí)候也會(huì)用$signed()任務(wù)來(lái)強(qiáng)制轉(zhuǎn)換數(shù)據(jù),那么signed的修飾是為什么呢,是為了區(qū)分有符號(hào)數(shù)和無(wú)符號(hào)數(shù)的加法和乘法
    的頭像 發(fā)表于 02-17 17:47 ?1237次閱讀
    <b class='flag-5'>Verilog</b>中signed和$signed()的用法

    淺談Verilog和VHDL的區(qū)別

    Verilog和VHDL是兩種廣泛使用的硬件描述語(yǔ)言(HDL),它們用于描述和模擬數(shù)字電路系統(tǒng)的行為和結(jié)構(gòu)。這兩種語(yǔ)言的主要作用是幫助工程師設(shè)計(jì)、仿真和驗(yàn)證集成電路(IC)和系統(tǒng)級(jí)芯片(SoC)中的硬件模塊。
    的頭像 發(fā)表于 02-17 14:20 ?2766次閱讀
    淺談<b class='flag-5'>Verilog</b>和VHDL的區(qū)別

    數(shù)字集成電路 Verilog 熟悉vivado FPGA微電子、電子工程

    1、計(jì)算機(jī)、微電子、電子工程等相關(guān)專(zhuān)業(yè)碩士; 2、熟悉數(shù)字集成電路基本原理、設(shè)計(jì)技巧、設(shè)計(jì)流程及相關(guān)EDA工具; 3、精通Verilog語(yǔ)言,熟悉AMBA協(xié)議; 4、有FPGA開(kāi)發(fā)或SOC設(shè)計(jì)經(jīng)驗(yàn)優(yōu)先; 5、具有較強(qiáng)的獨(dú)立工作能力、良好的團(tuán)隊(duì)合作精神。
    發(fā)表于 02-11 18:03

    關(guān)于用Labview編寫(xiě)壓機(jī)軟件

    我想請(qǐng)教一下,我如果想實(shí)現(xiàn)如下圖這樣,在xy圖上有力判定點(diǎn)該如何做到
    發(fā)表于 01-29 19:12

    產(chǎn)品如何做到可靠的防靜電設(shè)計(jì)

    眾所周知,工業(yè)產(chǎn)品所應(yīng)用的電磁環(huán)境之惡劣。要想產(chǎn)品在如此惡劣的電磁環(huán)境下正常工作,需要具備強(qiáng)大的抗干擾能力方能勝任。其中以靜電干擾最為常見(jiàn)且棘手。本文將手把手教你如何將工業(yè)產(chǎn)品做到可靠的防靜電
    的頭像 發(fā)表于 01-16 09:16 ?1245次閱讀
    產(chǎn)品<b class='flag-5'>如何做到</b>可靠的防靜電設(shè)計(jì)

    ads1298 PACE Detect實(shí)際做到電路中,微分電路輸出干擾實(shí)在太大了,怎么解決?

    ads1298 PACE Detect 解決方案,通過(guò)仿真效果不錯(cuò),可實(shí)際做到電路中,微分電路輸出干擾實(shí)在太大,連20mv左右的起搏脈沖都被淹沒(méi)在干擾中,別說(shuō)檢測(cè)出2mv的信號(hào)了。電路
    發(fā)表于 01-15 07:54

    1260110聚合物鋰電池,8000毫安充電寶電芯,3.7v、10000mAh軟包電池

    1260110 聚合物鋰電池 8000 毫安充電寶電芯 10000mAh 3.7v 軟包電池憑借其出色的性能、安全可靠的特性,成為了當(dāng)下充電寶市場(chǎng)的中流砥柱。了解了這些知識(shí),下次挑選充電寶時(shí),相信大家就能做到心中有數(shù),輕松選出最適合自己的那一款啦!
    的頭像 發(fā)表于 01-03 16:32 ?7200次閱讀
    1260110聚合物鋰電池,8000毫安充電寶電芯,3.7v、10000mAh軟包電池