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

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

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

Verilog是編程語(yǔ)言嗎

奈因PCB電路板設(shè)計(jì) ? 來(lái)源:硅農(nóng) ? 作者:硅農(nóng) ? 2021-08-23 14:30 ? 次閱讀

知乎上刷到一個(gè)問(wèn)題,問(wèn)性能最強(qiáng)的編程語(yǔ)言是什么?看到高贊回答到是Verilog,然后在評(píng)論區(qū)就引發(fā)了一場(chǎng)Verilog到底算不算編程語(yǔ)言的爭(zhēng)論,我覺(jué)得比較有意思,所以就也打算嘮嘮這個(gè)事情。

趁著最近奇葩說(shuō)正播,本篇文章試著用辯論的形式來(lái)討論一下這個(gè)問(wèn)題。正反兩方,正方:Verilog當(dāng)然算編程語(yǔ)言,反方:Verilog不能稱為編程語(yǔ)言。接下來(lái),有請(qǐng)雙方立論。正方先開(kāi)始。

正方

Verilog當(dāng)然算是編程語(yǔ)言,首先我們來(lái)看看什么叫編程語(yǔ)言。根據(jù)維基百科,最早的編程語(yǔ)言是在電腦發(fā)明之前,當(dāng)時(shí)是用來(lái)控制提花織布機(jī)及自動(dòng)演奏鋼琴的動(dòng)作。

所以并不是說(shuō)在計(jì)算機(jī)體系結(jié)構(gòu)上跑的才能叫編程語(yǔ)言,你做一段可以自動(dòng)彈棉花的動(dòng)作,規(guī)定規(guī)則(語(yǔ)法)和含義(語(yǔ)義),這就可以稱為一段編程語(yǔ)言。再來(lái)看Verilog,符合編程語(yǔ)言描述的語(yǔ)法和語(yǔ)義,然后通過(guò)綜合(編譯)生成bit流文件,下載FPGA上,F(xiàn)PGA根據(jù)這個(gè)bit流文件,然后將內(nèi)部的LUT、D觸發(fā)器等基本單元任意組合實(shí)現(xiàn)組合電路和時(shí)序電路。

最終使FPGA能實(shí)現(xiàn)各種硬件功能。請(qǐng)問(wèn)這樣還不算編程語(yǔ)言算什么?這是我方的第一個(gè)論點(diǎn)。

再來(lái),我準(zhǔn)備了一頁(yè)P(yáng)PT

TIOBE公司公布的1月全球最流行編程語(yǔ)言排行榜,可以看到Verilog還沒(méi)有排到前50 ,但是沒(méi)關(guān)系,Verilog上榜了,權(quán)威機(jī)構(gòu)都說(shuō)明了,所以Verilog作為編程語(yǔ)言,還有什么需要爭(zhēng)論的。這是我方第二個(gè)論點(diǎn)。

再來(lái),剛才我在前面提到了FPGA,F(xiàn)PGA的全稱是什么,F(xiàn)ield Programmable Gate Array,現(xiàn)場(chǎng)可編程邏輯門陣列,看到?jīng)]有——可編程,那么它對(duì)應(yīng)的編程語(yǔ)言是啥,就是Verilog。

我們很多理工科專業(yè)的朋友在學(xué)?;蚨嗷蛏俣冀佑|過(guò)FPGA??梢哉f(shuō)在FPGA上你可以用Verilog寫出任何數(shù)字電路,但是這個(gè)編程的過(guò)程也是非常漫長(zhǎng)和枯燥的,因?yàn)槟阋獜淖钚∫粋€(gè)門,一個(gè)D觸發(fā)器開(kāi)始搭建,然后要進(jìn)行漫長(zhǎng)的仿真調(diào)試,才能實(shí)現(xiàn)最終一個(gè)硬件功能。

為什么設(shè)計(jì)起來(lái)這樣累的語(yǔ)言還一直被我們使用,因?yàn)樗悄壳拔覀冊(cè)O(shè)計(jì)電路最主流、流程最完善、PPA權(quán)衡最好的語(yǔ)言,如果說(shuō)有人問(wèn)?目前性能最強(qiáng)的編程語(yǔ)言是什么,那么我一定回答是Verilog,因?yàn)闆](méi)有哪個(gè)語(yǔ)言的運(yùn)行速度能跑得快FPGA和ASIC

反方

OK,別著急,我們慢慢來(lái),都在射程范圍之內(nèi),都在射程范圍之內(nèi)。

剛才,對(duì)方一直不斷重復(fù)Verilog,Verilog,但是卻沒(méi)有說(shuō)全Verilog的全稱是什么,Verilog HDL,HDL是什么,不是Hardware Design Language硬件設(shè)計(jì)語(yǔ)言,是Hardware Description Language硬件描述語(yǔ)言??吹?jīng)]有,Verilog在定義時(shí)在名稱上就說(shuō)的明明白白,它是硬件描述語(yǔ)言,而不是編程語(yǔ)言。

再來(lái),對(duì)方第二個(gè)論點(diǎn),舉例了一個(gè)TIOBE的最流行編程語(yǔ)言排行榜,說(shuō)上面有Verilog,覺(jué)得這就是權(quán)威,從而得出結(jié)論,說(shuō)Verilog是編程語(yǔ)言。首先,我方相信這個(gè)排行榜的流行準(zhǔn)確性,但是你要知道這個(gè)排行榜是否會(huì)真的去研究Verilog到底能不能歸類到編程語(yǔ)言范疇的這個(gè)問(wèn)題?

因?yàn)檫@個(gè)排行榜真正在意的重點(diǎn)是語(yǔ)言的受歡迎程度,而不是語(yǔ)言的準(zhǔn)確分類。如果今天有一個(gè)排行榜,來(lái)公布的是最流行的硬件描述語(yǔ)言的話,我相信排在第一第二的肯定是VHDL和Verilog HDL。

所以我方認(rèn)為對(duì)方的第二個(gè)論點(diǎn)不成立。

至于對(duì)方所提到的第三點(diǎn),F(xiàn)PGA全稱是現(xiàn)場(chǎng)可編程邏輯門陣列,但是這里的可編程應(yīng)該理解為可更改的意思,而并不是Verilog對(duì)它進(jìn)行編程。用Verilog描述的電路可以運(yùn)行在FPGA上,意味著這個(gè)電路是可更改,可擦除的。

對(duì)方最后提到的Verilog是性能最強(qiáng)的編程語(yǔ)言,我認(rèn)為這樣和其他編程語(yǔ)言做比較,完全就是在作弊,因?yàn)榫幊陶Z(yǔ)言都是最終被編譯成二進(jìn)制指令,運(yùn)行在電路上的,Verilog就是電路本身。沒(méi)有人能快過(guò)電路本身。

我們把編程語(yǔ)言寫出來(lái)的代碼叫程序,程序是什么?在計(jì)算機(jī)中程序就是控制計(jì)算機(jī)的指令。HDL寫出來(lái)的代碼叫什么?好像也不能直接叫程序,因?yàn)閺哪撤N意義上它只是電路的一種描述形式,它可以說(shuō)就是計(jì)算機(jī)、就是電路。所以用Verilog寫的代碼只能叫代碼,不能叫程序。這是Verilog和編程語(yǔ)言的本質(zhì)區(qū)別。

最后,這道題目我們?cè)谟懻摰氖鞘裁矗覀冊(cè)谟懻摰氖蔷幊陶Z(yǔ)言嗎?不是,這道題目我們最終要討論的是,你在寫Verilog的時(shí)候,是否心中有電路。我們?cè)趯慥erilog時(shí),是在做一個(gè)電路設(shè)計(jì),Verilog只是作為一個(gè)工具,幫我們將腦海構(gòu)思的設(shè)計(jì)、電路給實(shí)現(xiàn)出來(lái)。

況且你寫代碼的時(shí)候,不僅心中要有電路,而且還得寫下來(lái),畫出來(lái),然后照?qǐng)D施工。如果你真的清楚的知道自己是在做什么,而不是利用現(xiàn)有積累的語(yǔ)法規(guī)則和方法去實(shí)現(xiàn)一定的功能的時(shí)候,你就不會(huì)提出這個(gè)問(wèn)題。因?yàn)槟闱宄?,我這不是在編程,我這是在描述硬件,我是在設(shè)計(jì)電路。綜上,我方認(rèn)為Verilog不是編程語(yǔ)言,它是硬件描述語(yǔ)言。

最后

Verilog是一種硬件定義語(yǔ)言。編程語(yǔ)言通常被理解為用于告知現(xiàn)有硬件要做什么的語(yǔ)言,而不是直接用于描述硬件的語(yǔ)言,即使在維基百科和各大網(wǎng)站會(huì)把Verilog歸類到編程語(yǔ)言當(dāng)中,廣義上來(lái)說(shuō)編程語(yǔ)言的范疇甚至在計(jì)算機(jī)出現(xiàn)之前,硬要這么歸類,也沒(méi)問(wèn)題。但是我認(rèn)為我們學(xué)習(xí)、使用Verilog的朋友,必須要區(qū)分開(kāi)軟硬件的差異。用Verilog寫代碼不叫編程,那叫描述電路。

關(guān)于這個(gè)問(wèn)題,你還有什么見(jiàn)解,歡迎評(píng)論區(qū)留言。責(zé)任編輯:haq

聲明:本文內(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)投訴
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1333

    瀏覽量

    109712
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3521

    瀏覽量

    93263

原文標(biāo)題:靈魂發(fā)問(wèn):Verilog到底能不能算是編程語(yǔ)言?這位技術(shù)老兵是這樣說(shuō)的……

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    PLC的編程方式及編程語(yǔ)言

    在工業(yè)自動(dòng)化領(lǐng)域,PLC(Programmable Logic Controller,可編程邏輯控制器)因其強(qiáng)大的控制功能和靈活的編程方式而得到了廣泛應(yīng)用。PLC的編程方式和編程
    的頭像 發(fā)表于 06-27 14:08 ?409次閱讀

    abb工業(yè)機(jī)器人的編程語(yǔ)言是什么

    ABB工業(yè)機(jī)器人的編程語(yǔ)言主要是RAPID(Robot Application Programming Interface for Development),它是一種高級(jí)編程語(yǔ)言,專門
    的頭像 發(fā)表于 06-16 16:49 ?1666次閱讀

    PLC編程語(yǔ)言和C語(yǔ)言的區(qū)別

    在工業(yè)自動(dòng)化和計(jì)算機(jī)編程領(lǐng)域中,PLC(可編程邏輯控制器)編程語(yǔ)言和C語(yǔ)言各自扮演著重要的角色。盡管兩者都是
    的頭像 發(fā)表于 06-14 17:11 ?1566次閱讀

    PLC常用編程語(yǔ)言有哪些

    在工業(yè)自動(dòng)化領(lǐng)域,PLC(Programmable Logic Controller,可編程邏輯控制器)作為一種核心控制設(shè)備,其編程語(yǔ)言的選擇對(duì)于控制系統(tǒng)的設(shè)計(jì)、開(kāi)發(fā)和維護(hù)具有重要影響。PLC的
    的頭像 發(fā)表于 06-14 16:58 ?716次閱讀

    fpga是用c語(yǔ)言還是verilog

    FPGA(現(xiàn)場(chǎng)可編程邏輯門陣列)開(kāi)發(fā)主要使用的編程語(yǔ)言是硬件描述語(yǔ)言(HDL),其中Verilog是最常用的
    的頭像 發(fā)表于 03-27 14:38 ?1218次閱讀

    fpga語(yǔ)言是什么?fpga語(yǔ)言與c語(yǔ)言的區(qū)別

    FPGA語(yǔ)言,即現(xiàn)場(chǎng)可編程門陣列編程語(yǔ)言,是用于描述FPGA(Field Programmable Gate Array)內(nèi)部硬件結(jié)構(gòu)和行為的特定語(yǔ)
    的頭像 發(fā)表于 03-15 14:50 ?740次閱讀

    fpga通用語(yǔ)言是什么

    FPGA(現(xiàn)場(chǎng)可編程門陣列)的通用語(yǔ)言主要是指用于描述FPGA內(nèi)部邏輯結(jié)構(gòu)和行為的硬件描述語(yǔ)言。目前,Verilog HDL和VHDL是兩種最為廣泛使用的FPGA
    的頭像 發(fā)表于 03-15 14:36 ?399次閱讀

    fpga三種編程語(yǔ)言

    FPGA(現(xiàn)場(chǎng)可編程門陣列)的編程涉及到三種主要的硬件描述語(yǔ)言(HDL):VHDL(VHSIC Hardware Description Language)、Verilog以及Syst
    的頭像 發(fā)表于 03-15 14:36 ?800次閱讀

    fpga用什么語(yǔ)言編程

    FPGA(現(xiàn)場(chǎng)可編程門陣列)的編程主要使用硬件描述語(yǔ)言(HDL),其中最常用的是Verilog HDL和VHDL。
    的頭像 發(fā)表于 03-14 18:17 ?2153次閱讀

    fpga用的是什么編程語(yǔ)言 fpga用什么語(yǔ)言開(kāi)發(fā)

    fpga用的是什么編程語(yǔ)言 FPGA(現(xiàn)場(chǎng)可編程邏輯門陣列)主要使用的編程語(yǔ)言是硬件描述語(yǔ)言(H
    的頭像 發(fā)表于 03-14 17:09 ?2808次閱讀

    fpga芯片用什么編程語(yǔ)言

    FPGA芯片主要使用的編程語(yǔ)言包括Verilog HDL和VHDL。這兩種語(yǔ)言都是硬件描述語(yǔ)言,用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)和行為。
    的頭像 發(fā)表于 03-14 16:07 ?1292次閱讀

    verilog與其他編程語(yǔ)言的接口機(jī)制

    Verilog是一種硬件描述語(yǔ)言,用于描述數(shù)字電路的行為和結(jié)構(gòu)。與其他編程語(yǔ)言相比,Verilog具有與硬件緊密結(jié)合的特點(diǎn),因此其接口機(jī)制也
    的頭像 發(fā)表于 02-23 10:22 ?466次閱讀

    腳本語(yǔ)言編程語(yǔ)言的區(qū)別

    腳本語(yǔ)言編程語(yǔ)言是計(jì)算機(jī)語(yǔ)言的兩個(gè)主要分類。盡管兩者都是用于編寫計(jì)算機(jī)程序的工具,但它們?cè)谠O(shè)計(jì)和運(yùn)行方式上存在一些顯著的區(qū)別。下面將詳細(xì)探討腳本語(yǔ)
    的頭像 發(fā)表于 11-22 14:33 ?2517次閱讀

    Python編程語(yǔ)言屬于什么語(yǔ)言

    Python編程語(yǔ)言屬于高級(jí)編程語(yǔ)言中的一種。它是一種通用、面向?qū)ο?、解釋?b class='flag-5'>編程語(yǔ)言。Pytho
    的頭像 發(fā)表于 11-22 14:31 ?1140次閱讀

    基于Rust開(kāi)發(fā)的編程語(yǔ)言

    Move 是一門由 Rust 語(yǔ)言開(kāi)發(fā)的一門面向資產(chǎn)的編程語(yǔ)言,最早由 Facebook (現(xiàn) Meta )投入大量的人力物力開(kāi)發(fā),用于 Libra (現(xiàn) Dime )項(xiàng)目,處理全球性大規(guī)模支付系統(tǒng)的
    的頭像 發(fā)表于 11-17 12:30 ?575次閱讀