FPGA設(shè)計(jì)中,RAM的兩種實(shí)現(xiàn)方法詳解
? ? ? ?操作系統(tǒng):win7
? ? ? ?
實(shí)現(xiàn)方法一:利用LPM_RAM
? ? ? ?
DEPTH = 256;
WIDTH = 8;
ADDRESS_RADIX = HEX;
DATA_RADIX = HEX;
CONTENT
BEGIN
0000 : 0000;
0001 : 0000;
0002 : 0000;
……(此處省略一千字*.*)
00FA : 00FF;
00FB : 00FF;
00FC : 00FF;
00FD : 00FF;
00FE : 00FF;
00FF : 00FF;
END;
(2) 設(shè)置全局參數(shù)
? ? ? ?
int main(void)
{
int i,temp;
float s;
FILE *fp;
fp = fopen("TestMif.mif","w"); /*文件名隨意,但擴(kuò)展名必須為.mif*/
if(NULL==fp)
printf("Can not creat file!\r\n");
else
{
printf("File created successfully!\n");
/*
* 生成文件頭:注意不要忘了“;”
*/
fprintf(fp,"DEPTH = %d;\n",DEPTH);
fprintf(fp,"WIDTH = %d;\n",WIDTH);
fprintf(fp,"ADDRESS_RADIX = HEX;\n");
fprintf(fp,"DATA_RADIX = HEX;\n");
fprintf(fp,"CONTENT\n");
fprintf(fp,"BEGIN\n");
/*
* 以十六進(jìn)制輸出地址和數(shù)據(jù)
*/
for(i=0;i
{
/*周期為128個(gè)點(diǎn)的正弦波*/
s = sin(PI*i/64);
/*將-1~1之間的正弦波的值擴(kuò)展到0-255之間*/
temp = (int)((s+1)*255/2);
/*以十六進(jìn)制輸出地址和數(shù)據(jù)*/
fprintf(fp,"%x\t:\t%x;\n",i,temp);
}//end for
fprintf(fp,"END;\n");
fclose(fp);
}
}
? ? ? ? ?
? ? ? ?
方法二、使用verilog純文本的描述方式
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!