18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

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

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

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

Verilog如何做到心中有電路?

倩倩 ? 來源:IP與SoC設計 ? 作者:IP與SoC設計 ? 2022-08-31 14:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

老師說沒電路就不要寫代碼,但我寫個乘法器在綜合前都想不出它電路啥樣,全加器還行,寫Verilog如何做到心中有電路?

首先,你們老師說的是正確的,但可能是說的不夠詳細,或者你表達的不全。

準確的說,在寫Verilog前,要做到心中有數(shù)字電路。

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

我在學生時代剛開始學數(shù)字電路設計的時候,很長一段時間都是眼里只有代碼和功能時序,沒有一個良好的正向設計思路。比如,知道要實現(xiàn)的功能,二話不說開始新建.v寫代碼,邊寫邊想,這樣導致的結(jié)果,準確的來說時序都是調(diào)出來的,而不是設計出來的。

寫的代碼幾乎全使用


		

always @(posedge clk or negedge rst_n)

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

而實際上做設計最應該關注的是PPA(Performance, Power, Area),寄存器多面積必然大,處理必然延時大,功耗怎么小。寄存器打拍是因為組合邏輯路徑過長,才往中間插一拍,而不是隨便打。

在寫Verilog前,不光要心中有電路,還要有關鍵時序圖,有一個硬件的詳細設計方案。而且不光在心里,還得寫下來,畫下來,整理成文檔。在動手寫代碼前,心中就有了譜,清楚的知道,我這個設計能成。

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

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

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

到了單個計算模塊,每個模塊都能畫出一個簡單的計算電路圖,

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

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

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

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

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

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

回到我們說的Verilog HDL的HDL的全稱是Hardware Description language,是硬件描述語言,不是design,是在描述之前,你就得想好要描述的東西。做設計的時候按照這樣的思路和套路去想,去做。

再來說說做設計時的描述方式,一些更底層的描述方式,比如

&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]

變量乘以一個常數(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]);

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

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

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

最后再扯一段我用過好幾次的話

學習Verilog的五個階段

00:心中無電路,代碼無電路

01:心中有電路,代碼無電路

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

11:心中無電路,代碼有電路

00:心中無電路,代碼無電路

達到10就可以了,這時候你就是高手了,再往后就開始玩玄學了。

歡迎糾正,歡迎補充。

審核編輯 :李倩


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

    關注

    173

    文章

    6058

    瀏覽量

    176998
  • 寄存器
    +關注

    關注

    31

    文章

    5503

    瀏覽量

    128303
  • Verilog
    +關注

    關注

    30

    文章

    1369

    瀏覽量

    113809

原文標題:寫Verilog如何做到心中有電路?

文章出處:【微信號:IP與SoC設計,微信公眾號:IP與SoC設計】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

    Verilog中signed和$signed()的用法

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

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

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

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

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

    Verilog 電路仿真常見問題 Verilog 在芯片設計中的應用

    在現(xiàn)代電子設計自動化(EDA)領域,Verilog作為一種硬件描述語言,已經(jīng)成為數(shù)字電路設計和驗證的標準工具。它允許設計師以高級抽象的方式定義電路的行為和結(jié)構,從而簡化了從概念到硅片的整個設計流程
    的頭像 發(fā)表于 12-17 09:53 ?1484次閱讀

    Verilog 與 ASIC 設計的關系 Verilog 代碼優(yōu)化技巧

    Circuit,專用集成電路)設計是一個復雜的過程,涉及到邏輯設計、綜合、布局布線、物理驗證等多個環(huán)節(jié)。在這個過程中,Verilog被用來描述數(shù)字電路的行為和結(jié)構,進而實現(xiàn)ASIC的設計。 具體來說
    的頭像 發(fā)表于 12-17 09:52 ?1349次閱讀

    Verilog 測試平臺設計方法 Verilog FPGA開發(fā)指南

    Verilog測試平臺設計方法是Verilog FPGA開發(fā)中的重要環(huán)節(jié),它用于驗證Verilog設計的正確性和性能。以下是一個詳細的Verilog測試平臺設計方法及
    的頭像 發(fā)表于 12-17 09:50 ?1441次閱讀

    如何使用 Verilog 進行數(shù)字電路設計

    使用Verilog進行數(shù)字電路設計是一個復雜但有序的過程,它涉及從概念設計到實現(xiàn)、驗證和優(yōu)化的多個階段。以下是一個基本的步驟指南,幫助你理解如何使用Verilog來設計數(shù)字電路: 1.
    的頭像 發(fā)表于 12-17 09:47 ?1606次閱讀

    Verilog與VHDL的比較 Verilog HDL編程技巧

    Verilog 與 VHDL 比較 1. 語法和風格 VerilogVerilog 的語法更接近于 C 語言,對于有 C 語言背景的工程師來說,學習曲線較平緩。它支持結(jié)構化編程,代碼更直觀,易于
    的頭像 發(fā)表于 12-17 09:44 ?2423次閱讀

    藍牙AOA定位系統(tǒng)如何做到高精準度?

    藍牙AOA定位系統(tǒng)是一種高精度的室內(nèi)定位技術,其高精準度是通過一系列高科技的技術和方法實現(xiàn)的。以下是給大家分析的幾點關于如何做到高精準度的幾個關鍵點:
    的頭像 發(fā)表于 12-13 11:42 ?828次閱讀

    ADC7846如何做到使用手指觸摸有效?

    ADC7846芯片觸摸轉(zhuǎn)換時候,不準,能否通過配置,如何做到使用手指觸摸有效?
    發(fā)表于 12-04 06:47

    兩個高速ADC的CLK時鐘如何做到同步無相位差?

    如何做到同步無相位差,兩個ADC使用同一個時鐘發(fā)生器是否可以滿足同步問題? 2、兩個高速ADC的CLKOUT是否存在時延,如果存在那相位差是多少?我再規(guī)格書中沒有看到CLKOUT引腳關于這方面的描述
    發(fā)表于 11-18 06:47

    如何自動生成verilog代碼

    介紹幾種自動生成verilog代碼的方法。
    的頭像 發(fā)表于 11-05 11:45 ?1375次閱讀
    如何自動生成<b class='flag-5'>verilog</b>代碼

    Verilog硬件描述語言參考手冊

    一. 關于 IEEE 1364 標準二. Verilog簡介三. 語法總結(jié)四. 編寫Verilog HDL源代碼的標準五. 設計流程
    發(fā)表于 11-04 10:12 ?4次下載

    system verilog語言簡介

    ICer需要System Verilog語言得加成,這是ICer深度的表現(xiàn)。
    發(fā)表于 11-01 10:44 ?0次下載