官方的参考文档是: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=;
memory_initialization_vector=
,
,
,
,
,
,
,
;
上面这个COE例子完成的是Memory Initialization,存储初始化。
下面是一个FIR COE例子:
radix=;
coefdata=
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
;
上面这个例子完成的是长度为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. with decimal coefficients
; (XC4000E/EX/XL/XV, Spartan/XL)
;
; This .COE file format is only compatible with this v1. core.
;
; The only families supported by this core are XC4000E, EX, XL, and XV,
; and Spartan and Spartan-XL.
;
; - taps, symmetric bit decimal coefficients
; - bit signed input (signed data by default)
; - bit output Component_Name=fltr16;
Number_Of_Taps=;
Input_Width = ;
Signed_Input_Data = true;
Output_Width = ;
Coefficient_Width = ;
Impulse_Response_Symmetry = true;
Radix = ;
CoefData=,-,,,,,,-;
(2)Bit Correlator
; Sample .COE coefficient file for v2. 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:
;
; - taps, hexadecimal coefficients
; - Serial input data
;
; Please refer to the datasheet for this core for more
; details on using the Mask option. radix = ;
pattern = ;