日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

Verilog如何做到心中有電路?

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

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

寫的代碼幾乎全使用


		

always @(posedge clk or negedge rst_n)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

再來說說做設(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]

變量乘以一個常數(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)化得更好,所以還不如直接用乘法器,*號。

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

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

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

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

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

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

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

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

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

歡迎糾正,歡迎補充。

審核編輯 :李倩


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

    關(guān)注

    173

    文章

    6090

    瀏覽量

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

    關(guān)注

    31

    文章

    5622

    瀏覽量

    130491
  • Verilog
    +關(guān)注

    關(guān)注

    31

    文章

    1374

    瀏覽量

    114756

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

    【PCIe 6.0 連載 · 中篇】從設(shè)計到實現(xiàn):高速信號如何做到又快又穩(wěn)?

    讀懂了PCIe6.0的行業(yè)價值,接下來更關(guān)鍵的是:64GT/s的高速信號,如何做到穩(wěn)定傳輸?上篇我們講了“為什么需要PCIe6.0”,本篇作為系列中篇,聚焦工程實現(xiàn)核心,拆解PAM4信號的“脆弱性
    的頭像 發(fā)表于 04-15 17:34 ?184次閱讀
    【PCIe 6.0 連載 · 中篇】從設(shè)計到實現(xiàn):高速信號<b class='flag-5'>如何做到</b>又快又穩(wěn)?

    高壓試驗變壓器如何做到“免維護”?背后是哪些設(shè)計在支撐長期可靠運行?

    開篇痛點您是否經(jīng)常為試驗變壓器的定期維護、加油、干燥處理而煩惱?設(shè)備停機維護不僅影響試驗計劃,更是一筆不小的人力與物料成本。有沒有一款設(shè)備,能真正做到“即插即用”,省心省力?“免維護”是綜合性
    的頭像 發(fā)表于 04-15 17:12 ?438次閱讀
    高壓試驗變壓器<b class='flag-5'>如何做到</b>“免維護”?背后是哪些設(shè)計在支撐長期可靠運行?

    工業(yè)交換機為什么必須支持SNMP?一文講清它的原理與作用

    當(dāng)現(xiàn)場部署了幾十臺、上百臺甚至上千臺工業(yè)交換機時,運維人員到底如何做到心中有數(shù)”?如果僅靠人工逐臺登錄設(shè)備排查,不僅效率低,而且?guī)缀醪痪邆鋵崟r性。
    的頭像 發(fā)表于 03-25 14:23 ?240次閱讀
    工業(yè)交換機為什么必須支持SNMP?一文講清它的原理與作用

    霍爾開關(guān)是怎樣做到微功耗的

    霍爾開關(guān)到底是怎么做到微功耗(μA 級)的? 弄懂這個,磁吸燈、玩具車、電池設(shè)備的功耗問題就全通了。? 一句話核心 霍爾開關(guān)不是一直工作,而是:醒一下→測一下→休眠??块g歇工作 + 內(nèi)部電路休眠,把
    的頭像 發(fā)表于 03-09 16:52 ?534次閱讀
    霍爾開關(guān)是怎樣<b class='flag-5'>做到</b>微功耗的

    Verilog HDL語法學(xué)習(xí)筆記

    Verilog HDL 語 言 最 初 是 作為 Gateway Design Automation 公 司 ( Gateway DesignAutomation 公司后來被著名的 Cadence Design Systems 公司收購)模擬器產(chǎn)品開發(fā)的硬件建模語言。
    的頭像 發(fā)表于 03-04 15:04 ?5849次閱讀
    <b class='flag-5'>Verilog</b> HDL語法學(xué)習(xí)筆記

    FPGA 入門必看:Verilog 與 VHDL 編程基礎(chǔ)解析!

    很多開發(fā)者第一次接觸FPGA,都會有同樣的疑問:FPGA是硬件,不是軟件,怎么寫程序?答案就是用硬件描述語言(HDL),最常用的就是Verilog和VHDL。今天,我們就帶你入門,搞清楚FPGA編程
    的頭像 發(fā)表于 01-19 09:05 ?766次閱讀
    FPGA 入門必看:<b class='flag-5'>Verilog</b> 與 VHDL 編程基礎(chǔ)解析!

    國產(chǎn)最強機器人大腦是如何做到

    這種拼湊的架構(gòu),導(dǎo)致指令需要跨越多個硬件和軟件層,造成高達數(shù)十甚至數(shù)百毫秒的延遲。
    的頭像 發(fā)表于 01-13 10:23 ?837次閱讀

    請問verilog文件開頭部分的@00080000是什么意思?

    請問verilog文件開頭部分的@00080000是什么意思??
    發(fā)表于 11-06 08:10

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

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

    什么是Wi-Fi 6 技術(shù),在人們生活中有哪些便利應(yīng)用

    silex希來科告訴您什么是Wi-Fi 6 技術(shù),在人們生活中有哪些便利應(yīng)用
    的頭像 發(fā)表于 08-28 09:19 ?1338次閱讀
    什么是Wi-Fi 6 技術(shù),在人們生活<b class='flag-5'>中有</b>哪些便利應(yīng)用

    請問IR900路由器如何做端口映射?

    IR900 路由器如何做端口映射?
    發(fā)表于 08-06 08:29

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

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

    無感考勤如何做到“無懈可擊”?

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

    大型數(shù)據(jù)中心中的差分晶體振蕩器應(yīng)用與頻率匹配方案解析

    介紹差分晶體振蕩器在數(shù)據(jù)中心中在交換芯片、AI服務(wù)器、存儲控制器等場景下的頻率匹配和接口設(shè)計方案。
    的頭像 發(fā)表于 07-16 08:00 ?1880次閱讀
    大型數(shù)據(jù)中<b class='flag-5'>心中</b>的差分晶體振蕩器應(yīng)用與頻率匹配方案解析

    這款微型MEMS IMU如何做到戰(zhàn)術(shù)級測量?

    在無人機、機器人、無人車輛等智能設(shè)備快速發(fā)展的今天,高精度姿態(tài)測量和穩(wěn)定控制成為核心需求。然而,傳統(tǒng)慣性測量單元(IMU)往往面臨體積大、重量重、環(huán)境適應(yīng)性差等痛點。ERICCO的ER-MIMU-103微型MEMS IMU以創(chuàng)新的設(shè)計和卓越的性能,為行業(yè)帶來全新解決方案。它是如何實現(xiàn)性能突破的?今天讓我們解析它的關(guān)鍵技術(shù)。 1.輕巧如羽,性能如磐 -尺寸僅有47×44×14mm,重量≤150g,輕松嵌入空間嚴苛的無人機、機械臂等設(shè)備,告別臃腫。 ?? -內(nèi)置高性能
    的頭像 發(fā)表于 06-27 16:10 ?771次閱讀
    鹿邑县| 班玛县| 潼南县| 平罗县| 玉溪市| 黄平县| 尼玛县| 治县。| 福安市| 综艺| 溆浦县| 靖宇县| 黄山市| 精河县| 贺兰县| 乐安县| 临沧市| 滕州市| 威远县| 霍州市| 濮阳市| 凌海市| 洮南市| 西青区| 中西区| 镶黄旗| 鄂托克前旗| 莱州市| 古蔺县| 阳朔县| 荥经县| 如皋市| 玉龙| 当阳市| 承德县| 河源市| 长乐市| 横峰县| 安丘市| 奉节县| 海盐县|