從零開始大戰(zhàn)FPGA——第三天(管中窺豹)
上周搬家,家里的網(wǎng)絡(luò)剛剛修好,更新耽擱了很久啊,接下來繼續(xù)FPGA從零前進(jìn),走你。
上次說要看FPGA的AD采集卡實(shí)例。
在看了Verilog的基本語法后,就開始迫不及待的想看看實(shí)例怎么應(yīng)用的。打開工程后傻眼了,這個(gè)project是用VHDL編寫的而不是我前段時(shí)間看的Verilog啊。。。無奈,只好找了一本VHDL的電子書看一看,這次我是直接看的代碼,遇到不認(rèn)識(shí)的標(biāo)識(shí)符,語法等等,就回去看電子書。所以效率非常低,這就是所謂的空中樓閣啊。(還是不建議像我一樣的初學(xué)者剛開始就看兩種語言,大牛除外,先把基本的設(shè)計(jì)思想,代碼是怎么跑的這些搞懂,語言的話只是工具,當(dāng)你了解了FPGA具體在干什么的時(shí)候,再來挑選所需語言)
在了解了每一行的代碼的意思后,又回過頭來看這個(gè)工程,還是看不懂(不能用學(xué)單片機(jī)、ARM的思維去學(xué)FPGA),以前跑AD在單片機(jī)或者ARM上調(diào)用一下庫函數(shù)就OK,根本不理會(huì)什么時(shí)序的東西,現(xiàn)在發(fā)現(xiàn)走不通。
調(diào)整了下思維,F(xiàn)PGA的設(shè)計(jì)是非常模塊化的感覺,那就先搞懂每個(gè)模塊的用途。
這個(gè)AD片子是個(gè)50MSPS,14位8通道的一個(gè)小東西。然后大體看了下datasheet的時(shí)序圖和引腳定義。大體包含了模擬輸入,數(shù)字輸出,時(shí)鐘(由FPGA提供),數(shù)據(jù)輸出時(shí)鐘(用來讀取采樣的數(shù)據(jù)),幀數(shù)據(jù)輸出時(shí)鐘(也就是輸出1幀1幀的數(shù)據(jù),也就是14位),串行時(shí)鐘和數(shù)據(jù)。
這時(shí)候就有點(diǎn)了解了,工程里先進(jìn)行最頂層模塊的的設(shè)計(jì)(VHDL用實(shí)體entity這么個(gè)關(guān)鍵詞,我表示快混淆概念了啊...),主要是端口的說明,也就是與AD片子的接口,時(shí)鐘(各種時(shí)鐘)、8路數(shù)據(jù)輸入等等,反正這個(gè)就對(duì)應(yīng)了與AD的接口關(guān)系。
可以把實(shí)體這部分看做一個(gè)系統(tǒng)的大方框,主要用來定義方框與外設(shè)的接口,相當(dāng)于main函數(shù)。(都是個(gè)人理解,僅供參考,歡迎指正)
接下來是結(jié)構(gòu)體的定義(用來說明實(shí)體這個(gè)大方框中的東西具體怎么工作的)。
包含這么幾部分:
1:信號(hào)說明
2:元器件定義
3:進(jìn)程(邏輯關(guān)系說明)
4:元器件例化(感覺元器件就像定義了有個(gè)水果,這個(gè)例化具體說明這個(gè)水果是叫什么名字,蘋果、桃子等等)
over,整體框架就出來了,主要是FPGA和AD的接口對(duì)應(yīng)關(guān)系,還有頂層的邏輯關(guān)系(選擇讀取哪個(gè)通道的數(shù)據(jù))
然后就納悶了,這就能控制AD讀取數(shù)據(jù)了?什么時(shí)候讀取AD采樣的值?什么時(shí)候把每一幀數(shù)據(jù)讀過來?當(dāng)然不夠。
所以,就有了下面的步驟:
再單獨(dú)寫一個(gè)文件,把每個(gè)通道看做一個(gè)單獨(dú)的AD元件,再寫一個(gè)小框架,并把每個(gè)小框架的端口對(duì)應(yīng)到大框架中的那個(gè)元件的端口。
然后再這個(gè)小框架中就可以定義邏輯電路了,對(duì)著AD時(shí)序圖,比如在數(shù)據(jù)時(shí)鐘上升沿采集數(shù)據(jù)等等。
從大到小,一步一步定義模塊。
最后編寫一個(gè)約束文件,把定義的端口,映射到FPGA管腳上。
總結(jié)下:
就像C程序中的多文件一樣,main函數(shù)調(diào)用子函數(shù),一級(jí)一級(jí)編寫。
困惑:
1:類屬性generic是嘛玩意,沒有這個(gè)會(huì)有什么影響?
AD這個(gè)暫時(shí)看到這,主要是想了解下FPGA的工程是怎么實(shí)現(xiàn)具體應(yīng)用的,準(zhǔn)備回歸夏宇聞的書本,和ISE的使用階段。
最后一點(diǎn),資料不要下了一大堆不看,抓住一個(gè)合適的再延伸(后來者引以為戒阿,不過有時(shí)還是控制不住,下載一大堆在那蒙灰...)
?
TO BE CONTINUE!歡迎持續(xù)關(guān)注哦~
如果你想與原作者交流學(xué)習(xí)FPGA的心得體會(huì),趕快參與到論壇熱烈討論吧~ Midas Elecfans用戶名:ThreeYear
評(píng)論