找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4840|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

VerilogHDL掃盲文(共26頁pdf)FPGA初學(xué)資料分享

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:255886 發(fā)表于 2017-11-30 21:30 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式


第0章: Verilog HDL掃盲文
會(huì)翻開這本筆記的讀者,估計(jì)你們都受夠了參考書的 “ 權(quán)威 ” ,即使把厚厚的參考書都啃完了 , 發(fā)覺自己對 Verilog HDL 語言的理解還是 “ 迷迷糊糊 ” 。 呵呵 , 筆者也是過來人 ,筆者當(dāng)然清楚這樣的心情,那種感覺真的是想 “ 涅破了蛋蛋 ” 。當(dāng)讀者還沒有進(jìn)入正章之前 , 筆者有責(zé)任幫讀者們來個(gè)簡單的掃盲掃盲 。 掃盲的目的有許多 , 第一是更進(jìn)一步刷新讀者對 Verilog HDL 語言的認(rèn)識(shí)。第二則是可以清楚表達(dá)筆記所要討論的范圍。

0.1 各種的 HDL 語言
很多進(jìn)入 FPGA 世界不久得朋友,第一個(gè)要學(xué)習(xí)當(dāng)然是 HDL 語言,在網(wǎng)上流行的有Verilog 和 VDL 這兩個(gè) HDL 語言 。 如果讀者是 VDL HDL 語言的愛好者 , 那么讀者可以立即把這本筆記關(guān)了 。 在筆者的眼中 VDL 太石板了 , 好像帶著三角眼睛的中年女老師,對男學(xué)生都要求和尚頭;對女生的裙字一定要長裙,這就是 VDL 給筆者的印象 。筆者不是說它不好 , 只是筆者嫌它麻煩而已 。 反之 Verilog 卻像是一個(gè)活潑而且愛搗蛋的小男孩,我們知道小男孩的思想很簡單卻很俏皮,我們要很難捉拿它。網(wǎng)上有一個(gè)很常見的問題 : “ 學(xué)習(xí) VDL HDL 好?還是學(xué)習(xí) Verilog HDL 好? ” ... 唉 ~朋友 , 很多問題的答案都是明顯的 。 筆者會(huì)很好客的說 : “ 來來來 ! Verilog HDL 很有趣也很好玩,不要理那個(gè)石板的 VDL HDL ” 。
“ 為什么筆記選擇 Verilog HDL 語言? ”
嗯 ... 這個(gè)問題筆者也很難回答,筆者是被特權(quán)同學(xué)帶入這個(gè)世界的。當(dāng)時(shí)學(xué)習(xí)的時(shí)候沒有考慮那么多 , 但是后來發(fā)現(xiàn)到 Verilog HDL 語言有太多的潛能了 , 筆者不小心就陷入研究它的陷阱了。 Verilog HDL 語言的語法和格式都比較隨便,它沒有 VDL HDL 語言那么嚴(yán)謹(jǐn) , 可能是這個(gè)原因吧?事實(shí)上選擇 VDL HDL 語言 也好 , 還是選擇 VerilogHDL 語言也好,都是一些蘿卜青菜的問題(各有所愛 ) 。筆者自身不喜歡受限制太多 ,故 Verilog HDL 語言和筆記意氣相投,所以筆者最終還是選擇了它。

0.2 HDL 語言的層次有一個(gè)很好笑的話題,老師常常都說 HDL 語言的層次是匯編語言和 C 語言的之間 。 假設(shè)匯編語言是低級(jí)語言, C 語言是高級(jí)語言,那么 HDL 語言既是不上又不。堪」 , 如果站在人類之中它亦是不男也不女 。 我們不需要為這個(gè)無聊的話題 , 浪費(fèi)太多思考的時(shí)間。 HDL 語言的英文全名是 Hardware Description Language ,中文譯名就是硬件描述語言 。 事實(shí)上無論是匯編語言也好還是 C 語言也好 , 它們的作用就是用來控制處
理器,反之 HDL 語言的作用只是用來建立一個(gè)硬件的模塊而已。打個(gè)比方 , 假設(shè)有一個(gè) c51 單片機(jī)的串口硬件 , 我們可以使用匯編語言去控制它 , 我們也可以使用 C 語言去控制它 。 但是站在 HDL 語言的角度上 , 我們可以建立一個(gè)受控制的串口硬件模塊,我們也可以建立一個(gè)不受控制(是自動(dòng)的意思,而不是暴走的意思 )的串口硬件模塊,當(dāng)然我們也可以用 HDL 去控制一個(gè)可以受控制的串口硬件模塊。從這一點(diǎn) , 我們就可以看出 HDL 語言和匯編語言與 C 語言基本上就在不同的層次上的東東,我們又何為把它們來作比較呢?但是在一些標(biāo)準(zhǔn)上 HDL 語言卻是硬件語言又是低級(jí)語言 ( 凡是涉及硬件的通通都被打入低級(jí)語言的冷宮 ) , 總而言之 HDL 語言的層次就是很曖昧就是了。
實(shí)際上還有不同層次級(jí)的 HDL 語言 , 如 SystemVerilog 或者 SystemC 。 傳言上它們都是系統(tǒng)級(jí)的 HDL 語言 , 相比之下 Verilog HDL 語言 和 VDL HDL 語言的層次都稱為模塊級(jí) 。 但是這些層次的區(qū)分一點(diǎn)也不重要 , 只要把 Verilog HDL 語言掌握得好 , 讀者什么層次都可以實(shí)現(xiàn)。

0.3 RTL 級(jí)和組合邏輯級(jí)
筆者說太多廢話了還是切入正題吧 。 雖說 Verilog HDL 語言是用來描述硬件 , 但是這些都是一些刻板的認(rèn)識(shí)和標(biāo)準(zhǔn)而已。從筆者的眼中 Verilog HDL 語言建立的硬件模塊可以分為有時(shí)鐘源和無時(shí)鐘源。
有時(shí)鐘源的意思是需要時(shí)鐘信號(hào)作為操作最基本消耗單位 , 硬件模塊才能執(zhí)行 。 無時(shí)鐘源的意思就是不需要消費(fèi)時(shí)鐘信號(hào) , 硬件模塊也可以被執(zhí)行 。 無時(shí)鐘源最好的例子就是由組合邏輯建立的硬件模塊 , 一些典型的設(shè)計(jì)如 : 硬件乘法器 , 硬件除法器等基本上都是由一些復(fù)雜的邏輯門組合 , 故它們根本就不需要時(shí)鐘來操作 , 或者說它們只需要一個(gè)步驟又或者只需要一個(gè)時(shí)鐘就可以完成任務(wù)。打個(gè)比方,就如同人類吃飯,在無時(shí)鐘源的情況下,放在餐桌上的食物一下子被吃光 ,而且瞬間食物被消化和被吸收(事實(shí)上這是不可能的 ) 。反之有時(shí)鐘源,就像我們需要心跳來提供身體一個(gè)節(jié)拍,每一個(gè)節(jié)拍都有固定的動(dòng)作,先張口,送入飯,吃下飯 , 消
化飯,然后吸收。
由此就有 RTL 級(jí)和組合邏輯級(jí)的建模之分 。 基本上 RTL 級(jí)建模的基本單元會(huì)是 “ 寄存器 ” , 然而組合邏輯級(jí)的建;締卧褪沁壿嬮T 。 單單用幾行的文字來講述 RTL 級(jí)和組合邏輯級(jí)的建模實(shí)在太抽象了,筆者聚個(gè)簡單的例子:


0.4 Verilog HDL 語言真的那么難掌握?
Verilog HDL 語言容易入門但是不容易掌握,估計(jì)這是所有學(xué)習(xí) Verilog HDL 語言人們的心聲 。 其實(shí)要掌握 Verilog HDL 語言是很簡單的 , 筆者的秘訣就是 “ 掌握 Verilog HD L語言的思想 ” 。 在筆者眼中 Verilog HDL 語言的思想有兩種 , 一種是建模和另一種是時(shí)序 。建模是 Verilog HDL 語言的結(jié)構(gòu)或者說是它的地基,然而時(shí)序是所有模塊的活動(dòng)記錄 。這些概念,目前的讀者不明白也不要緊,筆者已經(jīng)分為兩個(gè)筆記來詳談了它們了。筆者相信很多接觸 FPGA 的朋友之前都有接觸過單片機(jī),在不知不覺之中,自然而然學(xué)習(xí)單片機(jī)的想法就主宰了學(xué)習(xí) FPGA 。 筆者也是過來人 , 這樣的心情筆者非常的了解 。當(dāng)我們再學(xué)習(xí)單片機(jī)的時(shí)候 , 很多人估計(jì)都是直接以 C 語言入門吧?筆者就先說說單片機(jī)這個(gè)硬件吧 : 它們都是各大產(chǎn)商的產(chǎn)品 , 一些基本的硬件資源老早就已經(jīng)嵌入在這個(gè)小小的單片機(jī)當(dāng)中 。 余下 , 尤其說學(xué)習(xí)單片機(jī)還不如說我們學(xué)習(xí)如何控制單片機(jī)的寄存器更為貼切 。 一些硬件的發(fā)生 , 使用者可以完全不用知道 , 我們只要懂得如何配置控制該硬件的寄存器就可以了。

相比之下 FPGA 可以稱為赤裸裸的樂高積木 , 如果讀者要實(shí)現(xiàn)串口 , 讀者就要自行建立串口硬件模塊 。 要建立一個(gè)串口硬件模塊 , 首先需要明白串口的操作原理 , 然后根據(jù)需要自定義和修改原理的發(fā)生 。 最后還要考慮這個(gè)串口硬件模塊如何被控制?是否獨(dú)立化它(見接口建模 ) ?這些就是建模思路。在軟件方面 , 我們可以用 C 語言去配置單片機(jī)的寄存器和編輯單片機(jī)操作的邏輯 。 但是有一點(diǎn)請讀者不要忘了 , C 語言也是一個(gè)產(chǎn)品 , 它和 Verilog HDL 語言不同 C 語言在出生之后它就有自己的結(jié)構(gòu)和自己一套的使用規(guī)則 。 最后根據(jù)單片機(jī)的產(chǎn)商需要 , C 語言還可以進(jìn)一步被自定義 , 這種現(xiàn)象不難看見 , 學(xué)習(xí) c51 和學(xué)習(xí) AVR 基本上就有兩套的C語言用法。反之 Verilog HDL 語言雖然有語法 , 但是 Verilog HDL 語言就沒有自身的結(jié)構(gòu)也沒有自己一套的用法 。 在網(wǎng)上這種現(xiàn)象很普遍 , 讀者會(huì)看到五花八門 , 百花齊放 , 各種各樣的模塊內(nèi)容 。 很多時(shí)候 , 這些模塊的內(nèi)容只有設(shè)計(jì)者自己看懂而已 , 別人估計(jì)要花上幾倍的精力才可以搞明白 “ 它在干嘛 ” 。為此 , 如果要把 Verilog HDL 語言掌握好 , 第一要提供 Verilog HDL 語言的結(jié)構(gòu) , 第二要提供 Verilog HDL 語言一套用法(使用規(guī)則 ) 。前者筆者是用建模來解決,后者筆者用 “ 仿順序操作 ” 的想法來補(bǔ)充。


余下完整的pdf格式文檔51黑下載地址(共26頁pdf):
VerilogHDL掃盲文.pdf (3.23 MB, 下載次數(shù): 92)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:188115 發(fā)表于 2018-9-27 21:00 | 只看該作者
謝謝分享!
回復(fù)

使用道具 舉報(bào)

板凳
ID:343601 發(fā)表于 2018-10-8 15:01 來自手機(jī) | 只看該作者
學(xué)完32,想學(xué)FPGA,處于白紙狀態(tài)
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表