加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 課程介紹
  • 相關推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜
初級

(2020新版)小梅哥FPGA設計思想與驗證方法視頻教程

2020/07/14
7.8萬
  • 1評論
閱讀需 19 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

橫向二維碼.png

大家好,這里小梅哥將我們精心錄制和編輯的FPGA學習系列教程——《小梅哥FPGA設計思想與驗證方法視頻教程》分享給大家。教程充分考慮0基礎朋友的實際情況,手把手帶領學習者分析思路、編寫代碼、仿真驗證、板級調(diào)試。教語法,學仿真,一步一步,直到最后設計若干較為綜合的邏輯系統(tǒng)。

教程以我們自主開發(fā)的芯航線FPGA學習板為實驗平臺,通過若干基礎和綜合的系統(tǒng)設計講解,一步一步掌握FPGA設計與驗證的思想和方法。


以下為整理總結(jié)的每節(jié)課的知識點:

01、科學的開發(fā)流程

本集是視頻教程第一講,主要通過一個實例簡單演示FPGA開發(fā)的基本流程。本人也是自學過兩年FPGA,并參加了國內(nèi)某專業(yè)的FPGA培訓機構(gòu)100天就業(yè)培訓,并最終留任授課3個月。因此十分清楚了解各位學習者在剛開始學習FPGA時的各種苦悶。因此希望通過這樣一個視頻教程,把較為科學的FPGA學習方法和思想傳遞給大家。

如果大家所認為的FPGA開發(fā)流程就是編碼、下載、調(diào)試,那么你就該好好的看下這個視頻教程了,因為我也正是被這種錯誤的學習方式耽誤了好久好久,直到參加了培訓學習才知道,仿真驗證才是FPGA開發(fā)的重中之重,現(xiàn)在的我進行FPGA開發(fā),板級調(diào)試時間占不到整個開發(fā)過程的5%,并不是我不重視板級調(diào)試,而是因為通過完整的理論驗證之后,下載到板級上基本不會出現(xiàn)任何問題。科學的學習方法尤為重要,希望大家一定要注意這一點。我也曾在工作中遇到很多人,就算是我手把手的教他仿真、寫testbench,他也不愿意弄的情況,因此我只想在這里說,不仿真,永遠無法掌握FPGA時序設計的要點,做設計永遠是事倍功半。

 


02、3-8譯碼器設計驗證

本集是視頻教程第二講,主要通過3-8譯碼器的設計實現(xiàn)與驗證,講解Verilog基礎語法,并復習FPGA開發(fā)的基本流程。希望通過這樣一個視頻教程,帶領大家進一步熟悉FPGA的開發(fā)流程。

課程以實現(xiàn)3-8譯碼器的設計為起點,手把手演示工程創(chuàng)建,設計輸入以及仿真驗證,讓每一個0基礎的朋友都能快速跟上節(jié)奏。另外,有一定基礎的朋友,其實也可以觀看,因為在設計中,我已經(jīng)將很多的設計小技巧穿插在視頻中了。請明白:實現(xiàn)3-8譯碼器不是目的,目的是學習開發(fā)流程和基本技巧。


03、二進制計數(shù)器設計驗證

本集是視頻教程第三講,主要通過FPGA數(shù)字邏輯設計中最常用的一個模塊——二進制計數(shù)器的設計實現(xiàn)與驗證,講解Verilog基礎語法,并復習FPGA開發(fā)的基本流程。希望通過這樣一個視頻教程,帶領大家進一步熟悉FPGA的開發(fā)流程,并體會計數(shù)器在FPGA系統(tǒng)中的重要地位。

課程以實現(xiàn)二進制計數(shù)器的設計為起點,手把手演示工程創(chuàng)建,設計輸入以及仿真驗證,讓每一個0基礎的朋友都能快速跟上節(jié)奏。另外,有一定基礎的朋友,其實也可以觀看,因為在設計中,我已經(jīng)將很多的設計小技巧穿插在視頻中了。請明白:實現(xiàn)二進制計數(shù)器不是目的,目的是學習開發(fā)流程和基本技巧,并體會FPGA數(shù)字系統(tǒng)設計中常用的時間控制方式。


04、高性能計數(shù)器IP核使用

本集是視頻教程第四講,主要通過演示FPGA數(shù)字邏輯設計中除Verilog代碼方式設計外另外一種最常用的設計方式——使用IP核進行系統(tǒng)設計。本教程講解了如何在Quartus II軟件中調(diào)用一個基本的免費IP核——計數(shù)器IP核,并編寫Testbench對IP核進行仿真驗證,以教會大家如何正確科學的使用一個成熟的IP核。希望大家通過這樣一個視頻教程,感受到使用IP核進行系統(tǒng)設計的便捷性。

課程以學習使用計數(shù)器IP核為起點,手把手演示工程創(chuàng)建,IP核調(diào)用、Testbench編寫以及仿真驗證,讓每一個0基礎的朋友都能快速跟上節(jié)奏。另外,有一定基礎的朋友,其實也可以觀看,因為在設計中,我已經(jīng)將很多的設計小技巧穿插在視頻中了。請明白:學會使用計數(shù)器IP核不是不是目的,目的是感受使用IP核進行設計的便捷性。


05、BCD碼計數(shù)器設計驗證

本集是視頻教程第五講,主要講解數(shù)字系統(tǒng),尤其是時鐘系統(tǒng)中非常常見的一個模塊——BCD碼計數(shù)器的設計實現(xiàn)與驗證,講解Verilog基礎語法,了解BCD碼技術(shù)器與普通二進制計數(shù)器的區(qū)別。BCD碼計數(shù)器經(jīng)常用在需要十進制計數(shù),十進制格式輸出的場合。希望通過這樣一個視頻教程,帶領大家了解除二進制計數(shù)器以外的另一種計數(shù)實現(xiàn)方式。該BCD碼計數(shù)器將在綜合實驗如數(shù)字鐘、秒表、簡易數(shù)字頻率計中發(fā)揮強大作用,簡化系統(tǒng)設計。

課程以實現(xiàn)BCD碼計數(shù)器的設計為起點,手把手演示工程創(chuàng)建,設計輸入以及仿真驗證,讓每一個0基礎的朋友都能快速跟上節(jié)奏。另外,有一定基礎的朋友,其實也可以觀看,因為在設計中,我已經(jīng)將很多的設計小技巧穿插在視頻中了。


06、例解阻塞賦值與非阻塞賦值

本集是視頻教程第六講,主要通過簡單的例子對比了Verilog語法中阻塞賦值和非阻塞賦值的區(qū)別,通過證明非阻塞賦值多種賦值順序生產(chǎn)電路的唯一性,與非阻塞賦值多種賦值書序生成電路的不確定性,來展示使用非阻塞賦對設計可預測性的重要意義。

 


07、例說狀態(tài)機

本集是視頻教程第七講,主要通過簡單的例子介紹了FPGA設計中最常見的設計思想——狀態(tài)機,通過狀態(tài)機,可以實現(xiàn)很復雜的時序控制內(nèi)容,學好狀態(tài)機,是掌握FPGA技術(shù)的重中之重。

 


08、基于狀態(tài)機的獨立按鍵消抖

本集是視頻教程第八講,主要通過獨立按鍵消抖這樣一個實驗,來進一步舉例講解狀態(tài)機的設計思想,獨立按鍵消抖有多種方式可以實現(xiàn),這里采用狀態(tài)機的方式,既能方便大家理解按鍵消抖的整個過程,又能進一步領會狀態(tài)機的設計思想。

 


09、獨立按鍵控制LED與亞穩(wěn)態(tài)問題引入

本集是視頻教程第九講,主要通過獨立按鍵控制LED燈狀態(tài)變化這樣一個實驗,來驗證獨立按鍵消抖是否成功,另外,由于獨立按鍵作為一個外部異步輸入信號,因此借此機會剛好給大家詳細介紹了亞穩(wěn)態(tài)的原理和應對策略。希望大家在觀看學習時,重點體會亞穩(wěn)態(tài)的物理原理并掌握這種簡單外部輸入信號的亞穩(wěn)態(tài)應對方法。

 


10、數(shù)碼管動態(tài)掃描設計與實現(xiàn)

本集是視頻教程第十講,主要通過講解數(shù)碼管動態(tài)掃描原理,并提取出實現(xiàn)的電路結(jié)構(gòu),從電路結(jié)構(gòu)入手編寫代碼,仿真對設計進行驗證,最終板級調(diào)試時,使用In system sources and probes editor調(diào)試工具設置需要顯示的內(nèi)容,則數(shù)碼管顯示對應的數(shù)值。本節(jié)課與前面課程的風格稍有不同,本節(jié)課代碼不再是核心,核心是電路結(jié)構(gòu),電路結(jié)構(gòu)確定后編寫代碼只是照圖施工的過程。這也是越來越接近FPGA設計的底層思維。希望大家仔細體會。

 


11、UART串口發(fā)送模塊設計與驗證

本集是視頻教程第十一講,主要講解UART串口發(fā)送模塊的設計與實現(xiàn),教程同數(shù)碼管驅(qū)動的講解方法一致,也是從結(jié)構(gòu)到電路,最后寫代碼照圖施工,仿真對設計進行驗證,最終板級調(diào)試時,使用In system sources and probes editor調(diào)試工具設置需要發(fā)送的內(nèi)容,按下按鍵,則串口發(fā)送模塊將需要發(fā)送的數(shù)據(jù)對應發(fā)送出去,在PC機上使用串口調(diào)試工具即可接收顯示,驗證設計的正確性。該模塊將作為后期很多設計的基礎模塊進行使用,希望大家都能夠自己編寫并調(diào)試通過,為后面的學習做好準備。

 


12、UART串口接收模塊設計與驗證

本集是視頻教程第十二講,主要講解UART串口接收模塊的設計與實現(xiàn),教程同數(shù)碼管驅(qū)動的講解方法一致,也是從結(jié)構(gòu)到電路,最后寫代碼照圖施工,仿真對設計進行驗證,最終板級調(diào)試時,在PC機上使用串口調(diào)試工具發(fā)送測試數(shù)據(jù),使用In system sources and probes editor調(diào)試工具查看串口接收模塊接收到的數(shù)據(jù)內(nèi)容。通過比對發(fā)送和接收到的數(shù)據(jù)是否一致,驗證設計的正確性。該模塊將作為后期很多設計的基礎模塊進行使用,希望大家都能夠自己編寫并調(diào)試通過,為后面的學習做好準備。

 


13、嵌入式塊RAM應用之雙口RAM

本集是視頻教程第十三講,主要講解FPGA芯片中提供的專用嵌入式塊RAM的應用實例之一,也就是RAM IP核的使用。課程首先簡單介紹了Altera Cyclone 系列FPGA器件的內(nèi)部結(jié)構(gòu),然后介紹了RAM IP核的調(diào)用方法和配置窗口中的一些參數(shù)含義,然后通過仿真的方式對RAM IP核的接口時序進行了分析,為下一節(jié)課,RAM IP的具體應用實例打下了基礎。希望大家仔細體會這種使用仿真來探索驗證IP核接口時序的方法。


14、搭建串口收發(fā)與存取雙口RAM簡易應用系統(tǒng)

本集是視頻教程第十四講,主要通過將前面三講(串口發(fā)送、串口接收、嵌入式塊RAM)綜合起來,設計了一個簡易的小系統(tǒng),通過電腦以串口發(fā)送數(shù)據(jù)給FPGA,F(xiàn)PGA接收后存儲在RAM中,再在按鍵的控制下,讀取RAM中的數(shù)據(jù),通過串口發(fā)送出去。來體現(xiàn)模塊化設計的巨大優(yōu)勢。同時,視頻花了相當?shù)臅r間來演示使用Visio繪制系統(tǒng)架構(gòu)圖,一個好的架構(gòu)圖,不僅能夠讓設計者思維更清晰,也更加有利于設計在工程師間的交互,方便后期的升級和維護。希望大家仔細體會我這種模塊化拼接的設計思想。

 


15、ROM的搭建與Signaltap II 工具使用

本集是視頻教程第十五講,主要介紹了嵌入式塊RAM的另一個具體應用——ROM。在很多電子系統(tǒng)中,總有一部分數(shù)據(jù)是從始至終不需要改變,只需要在使用的時候讀取即可。在FPGA中,我們可以使用嵌入式塊RAM搭建具有ROM屬性的存儲器,用來存放某些需要永久保存的數(shù)據(jù)。本節(jié)課,通過使用ROM存儲器存儲三角波數(shù)據(jù),外建簡易地址發(fā)生器,搭建了一個簡易的信號發(fā)生器系統(tǒng)。并使用Quartus II軟件提供的強大的調(diào)試工具Signaltap II來對ROM的輸出信號進行抓取,以模擬波形的顯示出來,從而驗證設計的正確性,同時,本課程還介紹了使用In-System memory content editor在線更改ROM中的數(shù)據(jù),將三角波的波形數(shù)據(jù)更改為正弦波,然后再次在Signaltap II工具上觀察抓取到的信號,以驗證數(shù)據(jù)確實被更改。本節(jié)課程,內(nèi)容并不復雜,但是卻使用了多種調(diào)試工具,希望大家學有所獲。


16、FIFO介紹與時序驗證

本集是視頻教程第十六講,主要介紹了嵌入式塊RAM的另一個具體應用——FIFO。FIFO的完整英文拼寫為First In First Out,即先進先出。FPGA或者ASIC中使用到的FIFO一般指的是對數(shù)據(jù)的存儲具有先進先出特性的一個存儲器,常被用于數(shù)據(jù)的緩存或者高速異步數(shù)據(jù)的交互。本節(jié)課程,理論講解較為細致,望大家仔細理解體會,祝大家學有所獲。


17、使用PLL進行設計+Verilog參數(shù)化設計介紹

本集是視頻教程第十七講,主要介紹了Altera FPGA器件中提供的專用時鐘管理單元PLL的一些基本特性,并通過一個簡單的實例:PLL輸出的多路頻率不同的時鐘驅(qū)動同一個LED閃爍模塊,通過比較LED閃爍的頻率來驗證PLL對時鐘信號的正確管理。另外,視頻還介紹了Verilog語法中非常有用的一種技巧——參數(shù)化設計。參數(shù)化設計能給我們的功能模塊帶來最大的靈活性,使我們在不修改原本代碼內(nèi)容的前提下,修改其中某些關鍵參數(shù),從而適應于不同的應用。本節(jié)課程,即講解了PLL 的有關內(nèi)容,又講解了參數(shù)化設計的語法,希望大家學習過程中仔細體會參數(shù)化設計的好處。

 


18、基于線性序列機設計思想的串行DAC(TLC5620)驅(qū)動

本集是視頻教程第十八講,主要介紹了FPGA設計中除狀態(tài)機的設計思想外另外一種常見的設計方式——線性序列機。線性序列機和狀態(tài)機比較相似,確更加容易規(guī)劃實現(xiàn),對于信號變化與時間一一對應的時序設計,采用線性序列機往往更加快捷高效。本課首先介紹了線性序列機的設計思想,然后針對芯航線FPGA套件中配套的多通道串行ADDA模塊,介紹了其DAC電路和參考源電路,DAC芯片使用TLC5620芯片,該芯片的控制時序就是每個控制信號的變化時間與時間一一對應,因此非常適合使用線性序列機進行設計。接著,在Quartus II軟件中設計并使用modelsim仿真驗證依據(jù)線性序列機的設計思想設計的TLC5620控制器,最后,在芯航線FPGA學習套件上進行板級驗證,以驗證設計的正確性。驗證時,使用In system sources and probes editor工具,輸入希望輸出的電壓值對應的數(shù)字值,則芯航線FPGA開發(fā)板控制DAC模塊輸出正確的電壓值。本節(jié)課程,引入了新的一種設計方式——線性序列機,希望學習者自己體會,感受這種方式在應對具有串行執(zhí)行特征的時序電路設計中的優(yōu)勢。

 


19、基于線性序列機設計思想的串行ADC驅(qū)動

課程目標:學會使用線性序列機的思想設計常見的有串行執(zhí)行特征的時序邏輯

實驗平臺:芯航線FPGA學習套件主板,芯航線串行ADDA模塊

實驗現(xiàn)象:將串行多通道ADDA模塊接在芯航線FPGA開發(fā)板上,使用In system sources and probes editor設置DAC模塊輸出電壓信號,然后使用ADC采樣DAC的輸出電壓,將DAC輸出值和ADC采樣值進行比較,同時使用萬用表測量DAC輸出電壓以驗證ADC控制邏輯的正確性。

 

知識點:

1.復習線性序列機設計思想與實現(xiàn)

2.TLV1544型ADC芯片驅(qū)動設計


20、HT6221紅外遙控解碼

本集是視頻教程第二十講,具體課程內(nèi)容如下所示:

課程目標:學會使用FPGA來對脈沖編碼的數(shù)字序列進行解碼

實驗平臺:芯航線FPGA學習套件主板,基于HT6221的紅外遙控器

實驗現(xiàn)象:按下紅外遙控上的按鍵,然后在Quartus II軟件中使用In system sources and probes editor中觀察解碼結(jié)果,根據(jù)解碼結(jié)果與紅外遙控實際發(fā)出的數(shù)值進行比較從而判斷解碼的正確性。

 

本節(jié)課知識點:

1.脈沖編碼的數(shù)字解析

2.HT6221型紅外遙控編碼的解碼實現(xiàn)


相關推薦

電子產(chǎn)業(yè)圖譜