解讀verilog代碼的一點(diǎn)經(jīng)驗(yàn)
學(xué)習(xí)FPGA其實(shí)也不算久,開始的時(shí)候參考別人的代碼并不多,大多是自己寫的,那時(shí)候做時(shí)序邏輯多一些。參加了中嵌的培訓(xùn)班,一個(gè)多月的時(shí)間在熟悉ISE軟件的使用以及verilog語(yǔ)法方面下了苦功,也參考了不少書,算是為自己打下了比較好的基礎(chǔ)。因?yàn)槟菚r(shí)候培訓(xùn)的方向是軟件無(wú)線電方面的,所以做了很多有關(guān)的模塊程序,之前的日志里也發(fā)表了很多,關(guān)鍵是一個(gè)興趣,感覺(jué)仿真后看到自己的一個(gè)個(gè)算法思想得到實(shí)現(xiàn)真有成就感。后來(lái)停了一段時(shí)間,因?yàn)閷?shí)在沒(méi)有比較有意思的活干了。
本文引用地址:http://www.biyoush.com/article/268449.htm直到前段時(shí)間開始使用SP306的開發(fā)板,然后會(huì)參考它們的代碼,受益匪淺吧。現(xiàn)在組長(zhǎng)已經(jīng)給正活干了,跟的大項(xiàng)目我是基本都有所熟悉了,然后那個(gè)里面做總控的FPGA的代碼開始進(jìn)行總攻了,要把前輩們的代碼都消化了,然后更好的為下一代升級(jí)版的產(chǎn)品服務(wù)。這個(gè)看verilog程序估計(jì)是大家都比較頭疼的事,小的模塊都沒(méi)問(wèn)題,大模塊大項(xiàng)目,有時(shí)候就比較難以入手了,因?yàn)镠DL的設(shè)計(jì)是不同于軟件編程的,軟件其實(shí)無(wú)非一個(gè)大while或者再有一些中斷,大多是順序執(zhí)行的,慢慢一步一步往下走總會(huì)弄明白。HDL的并行性很強(qiáng),要是你按照軟件的思路來(lái)那肯定行不通,那么該怎么辦呢?我就班門弄斧說(shuō)點(diǎn)自己的一點(diǎn)快速進(jìn)階的小竅門吧。
既然HDL設(shè)計(jì)是并行的,那么就只能各個(gè)擊破了。我的習(xí)慣是先抓幾個(gè)重要端口,比如時(shí)鐘(CLK)、復(fù)位(RESET)等出現(xiàn)頻率比較高的端口,把它先弄清楚,比如時(shí)鐘是什么頻率的?復(fù)位是高有效還是低有效?
然后呢,最好是對(duì)照原理圖來(lái)理解程序。這就需要你有一定功底的硬件常識(shí)了,一些常用器件的操作時(shí)序什么的一定要做到心中有數(shù),至少要知其一二吧,這樣在讀程序時(shí)才會(huì)達(dá)到事半功倍的效果。比例說(shuō)你要先讀懂FPGA與AD芯片的程序,那么你先把AD的各個(gè)端口(如片選,讀寫,轉(zhuǎn)換,轉(zhuǎn)換完成中斷等端口)在verilog程序中出現(xiàn)的地方多做一下分析,比如我找CS信號(hào),看看什么時(shí)候它拉低有效,那么你可以在Find in file窗口中輸入CS,然后ENTER,這樣ISE就會(huì)在底層的信息窗口中羅列出所有使用了CS信號(hào)的語(yǔ)句方便你的查找分析,你把每個(gè)出現(xiàn)CS的地方分析到了,那么你就明白verilog在硬件上是如何操作CS信號(hào)的。所有信號(hào)多分析完以后,我想你就明白了這個(gè)AD與FPGA的接口了。
讀懂verilog有時(shí)比較累,因?yàn)槌绦蚴莿e人寫的,你要讓別人牽著鼻子走也是難免的。關(guān)鍵是要有耐心,多分析,有條件可以問(wèn)問(wèn)高手(最好是代碼的作者)。
評(píng)論