官方的参考文档是: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可以是:
Keyword | Description |
RADIX | 非存储模块的系数、内容设定 |
MEMORY_INITIALIZATION_RADIX | 用于ROM/RAM等存储模块的内容初始化 |
Data_Keyword可以是:
Keyword | Description |
COEFDATA | 滤波器系数 |
MEMORY_INITIALIZATION_VECTOR | 块状(Block)存储和分布式(Distributed)存储单元的内容(ROM/RAM) |
PATTERN | Bit 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;