6系列FPGA中使用塊RAM的心得(4)
調試過(guò)程中的一點(diǎn)小問(wèn)題
生成IP核的調用之后,然后對其進(jìn)行例化,格式是
rrra YourInstanceName (
.clka(clka),
.addra(addra), // Bus [9 : 0]
.douta(douta)); // Bus [43 : 0]
然后調用sinplify,對其進(jìn)行綜合,結果很不順利。首先是synplify報不支持器件,才發(fā)現synplify 9.6.2是2008年的產(chǎn)品,比Spartan6器件還要老。更新到Synplify Pro D-2010.03之后,器件是支持了,但是一綜合就報錯停止了,卻不提示有什么錯誤。查看工程文件夾下面的.log和.srr文件,里面也是啥信息都沒(méi)給。沒(méi)辦法,只好切換會(huì )使用XST進(jìn)行綜合。這回能給出信息了:因為例化了28次,所以有28個(gè)錯誤,全部提示ERROR:HDLCompilers:26 - f7.v line 49 unexpected token: rrra。
HDLCompilers:26這個(gè)錯誤,一般情況下是把wire類(lèi)型的值賦給了reg型的變量才提示的,但是仔細檢查了程序沒(méi)有發(fā)現有不對的類(lèi)型聲明,非常納悶。思考了好久才發(fā)現,問(wèn)題竟然就出在IP調用的身上。原來(lái),我在使用rrra ROM0(start,addr0,temp0);調用之后,對應的douta它是一個(gè)端口,自然是wire類(lèi)型的,而程序聲明中temp0是一個(gè)reg型的,用來(lái)傳遞參數時(shí)因為類(lèi)型不匹配自然提示錯誤了。
這里也發(fā)現了在ISE中調用synplify進(jìn)行綜合的一個(gè)不足之處,就是如果源程序中如果有錯誤的話(huà),在直接調用synplify時(shí),并不給出錯誤的具體信息,而是直接終止綜合;沒(méi)辦法還得使用XST點(diǎn)擊“check syntax”進(jìn)行程序的語(yǔ)法檢查,而在synplify環(huán)境下點(diǎn)擊“syntax check”一樣也能給出錯誤信息??磥?lái)二者的接口還不是非常完善吧。
評論