在生成ROM時(shí)需要提供coe文件,如下圖所示。這個(gè)coe文件本質(zhì)上就是Memory的初始化文件,Xilinx對(duì)其有具體的格式要求。
coe文件格式
coe文件格式要求如下圖所示,其中前兩行是固定的。其中第一行定義了Radix,可以是2、10或16,意味著第2行定義的數(shù)據(jù)向量?jī)?nèi)容可以是二進(jìn)制、十進(jìn)制或十六進(jìn)制。這里需要說(shuō)明的是定義的數(shù)據(jù)向量各個(gè)數(shù)據(jù)之間可以是空格,也可以是逗號(hào)(但此時(shí)最后一個(gè)數(shù)據(jù)要以分號(hào)結(jié)尾)或者回車換行符。
生成coe文件
Matlab作為主流的算法開發(fā)與驗(yàn)證平臺(tái)之一往往成為很多數(shù)據(jù)的重要來(lái)源,因此,在Matlab下生成coe文件是非常普遍的操作。這里要用到Matlab提供的一些文件操作函數(shù),如fopen、fprintf和fclose等。在此,我們定義函數(shù)gen_coe,它接收兩個(gè)參數(shù)fn和data。其中fn為生成的coe文件名,data為行或列向量。要求為十進(jìn)制整數(shù)。
Python提供了擴(kuò)展庫(kù)Numpy,可以方便地實(shí)現(xiàn)對(duì)矩陣的操作,利用Python也可以快捷地生成coe文件。這里提供兩個(gè)版本。兩個(gè)函數(shù)都有相同的參數(shù)fn和data,含義與上文提到的Matlab函數(shù)保持一致。在gen_coe_v1中,通過(guò)write()完成了寫數(shù)據(jù)操作。在gen_coe_v2中,則是通過(guò)np.savetxt完成了寫數(shù)據(jù)操作。在這個(gè)案例中,np.savetxt接收3個(gè)參數(shù),第一個(gè)參數(shù)為文件ID,第二個(gè)參數(shù)為矩陣的行索引,第三個(gè)參數(shù)為寫入格式。
聯(lián)系客服