官方的参考文档是:https://www.xilinx.com/support/documentation/sw_manuals/xilinx11/cgn_r_coe_file_syntax.htm

Xilinx COE文件用来初始化ROM内容,设置固定系数FIR的系数,还有其他的功能。

COE文件中的数据格式可以是2(Binary),10(Decimal)或者16(Hex)。

下面是一个简单MIF COE的例子:

memory_initialization_radix=2;
memory_initialization_vector=
0,
0,
1,
0,
0,
1,
0,
1;

上面这个COE例子完成的是Memory Initialization,存储初始化。

下面是一个FIR COE例子:

radix=10;
coefdata=
8,
15,
25,
40,
62,
93,
135,
189,
255,
336,
431,
539,
659,
790,
929,
1073,
1220,
1364,
1504,
1634,
1752,
1854,
1936,
1997,
2034,
2047,
2034,
1997,
1936,
1854,
1752,
1634,
1504,
1364,
1220,
1073,
929,
790,
659,
539,
431,
336,
255,
189,
135,
93,
62,
40,
25,
15,
8;

上面这个例子完成的是长度为51的低通FIR的系数定义。(系数量化为有符号12位,FIR Compiler中也设定为12位,实际系数中只有正幅值)

注意:

(1)每一个数据用逗号和换行实现,注意数据输入行不要加分号!(除了最后一行)否则分号会指定数据录入的结束。

************************************************************************************************************************************************************************

简单翻译一下官方手册内容。

COE文件的格式如下:

<Radix_Keyword> = Value ; Optional Comment
<Data_Keyword> = Data_Value1, Data_Value2, Data_Value3;

即要求设定:表示格式(Radix)和数据(Data)。关键字(Keyword)不分大小写。(不同ip使用不同的对应COE文件具体格式,可以参阅BRAM,FIR Compiler等的ip手册)

Radix_Keyword可以是:

KeywordDescription
RADIX非存储模块的系数、内容设定
MEMORY_INITIALIZATION_RADIX用于ROM/RAM等存储模块的内容初始化

Data_Keyword可以是:

KeywordDescription
COEFDATA滤波器系数
MEMORY_INITIALIZATION_VECTOR块状(Block)存储和分布式(Distributed)存储单元的内容(ROM/RAM)
PATTERNBit Correlator系数
BRANCH_LENGTH_VECTOR交织器系数
MEMDATA废弃关键词,已经不使用了



注意:1、分号后的代码都被认为是注释内容。

   2、COEFDATA,MEMORY_INITIALIZATION_VECTOR和MEMDATA必须是COE文件中最后一个Keyword。后续的所有关键词都被编译器忽略。

如果安装了ISE环境,则在C:\Xilinx\12.4\ISE_DS\ISE\coregen\data\ 目录下有许多的COE文件供参考,Bit Correlator、Block Memory、分布式算术FIR等等ip都可以参考这样的COE格式。

下面是一些COE文件例子:

(1)并行分布式算术FIR(PDA FIR)

; Sample coefficient definition file for a Parallel Distributed
; Arithmetic (PDA) FIR Filter V1.0 with decimal coefficients
; (XC4000E/EX/XL/XV, Spartan/XL)
;
; This .COE file format is only compatible with this v1.0 core.
;
; The only families supported by this core are XC4000E, EX, XL, and XV,
; and Spartan and Spartan-XL.
;
; - 16 taps, symmetric 8 bit decimal coefficients
; - 8 bit signed input (signed data by default)
; - 21 bit output

Component_Name=fltr16;
Number_Of_Taps=16;
Input_Width = 8;
Signed_Input_Data = true;
Output_Width = 21;
Coefficient_Width = 8;
Impulse_Response_Symmetry = true;
Radix = 10;
CoefData=1,-3,7,9,78,80,127,-128;

(2)Bit Correlator

; Sample .COE coefficient file for v2.0 and later versions of
; the Bit Correlator core.
;
; In this core, a COE file is used to specify the value of
; the bit mask when the Pattern Mask option is selected.
;
; Specifications:
;
; - 19 taps, hexadecimal coefficients
; - Serial input data
;
; Please refer to the datasheet for this core for more
; details on using the Mask option.

radix = 16;
pattern = 3 0 3 1 0 1 1 3 0 2 2 2 3 0 1 1 3 0 3;
01-18 20:33