本文是该系列的第5篇。第2篇中以数字滤波器的设计为主题,介绍了System Generator的完整设计流程。本文将对其中使用到的Gateway In和Gateway Out模块进行详细介绍。
Simulink到FPGA的转换
Simulink中的仿真模型为连续时间系统,数据格式多种多样;而FPGA中为离散时间系统,数据必须用一定的位数进行量化。两者之间必须要进行从连续到离散的转换、数据格式的转换,否则无法进行正确的FPGA设计。Xilinx Blockset中提供了相应的解决方案。
Gateway In和Gateway Out这两个block便是Simulink与FPGA之间的转换接口。经过转换后,Gateway In对应的是HDL模型中input;Gateway Out对应的是HDL模型中的output。可以说,所有的System Generator设计中必须包含至少一个Gateway In和Gateway Out。
Gateway In block
1.数据类型转换
Gateway In block可以完成从Simulink数据类型到FPGA数据类型的转换:
借助于此功能,在Simulink中搭建仿真模型,外部信号可以传入FPGA系统,方便的进行仿真测试。数据类型转换势必会牵扯到量化和溢出的问题,Gateway In block也对此做了相关支持,具体可参考参数设置小节。
2.block特性
除了数据类型转换功能外,Gateway In block还具有如下特性功能:
● 定义了FPGA设计中的输入端口,修改block名称即可修改HDL端口信号名称;
● 使用System Generator生成testbench时,软件会将输入到Gateway In block的Simulink仿真信号按照设置的数据格式转换并存储到dat文件中,在testbench中调用(具体可参考本系列第3篇)。
3.参数设置
(1).在Output Type和Arithmetic type中可以设置转换后输出数据的格式:
Boolean:布尔逻辑值,在HDL模型中对应单比特信号。
Fixed-point:定点数,包括“Signed(2’s comp)”带符号数二进制补码和“Unsigned”无符号数两种。
Floating-point:浮点数,Floating-point Precision可以设置数据为单精度(Single)、双精度(Double)或自定义的浮点数格式(Custom,自行规定指数与尾数位宽)。
(2).用有限位宽表示Simulink中的数据类型,必然会产生量化误差。在Quantization中可以选择数据的量化方式:
Truncate:直接舍弃不需要的低位。
Round(unbiased:+/-Inf):以四舍五入的方式量化。
(3).数据转换过程中还可能会出现溢出(设置的数据格式无法表示Simulink中的值),Overflow中可以设置不同的处理方式:
Wrap:舍弃掉需要表示的值的高位。
Saturate:溢出的数转换为(所设置的数据格式能表达的)最大值或最小值。
Flag as error:溢出时Simulink会报错(这个选项只在Simulink仿真时有效,在导出到FPGA时仍当作wrap处理)。
这里可以设置Gateway In转换到FPGA设计后的接口类型:“None”表示作为HDL设计的输入端口;“AXI4-Lite”表示会被当作AXI4-Lite总线(目前不会用到,相关配置也暂时不做介绍)。
IOB timing constraint设置该端口的时序约束:“None”表示不作约束;“Data rate”会将System Generator block中的系统时钟周期设置作为IO时钟约束。
如果System Generator的设计中,Gateway In恰好对应于FPGA硬件设计中的某个管脚,可以选中“Specify IOB location constraints”,根据提示完成管脚位置与IO电平标准的设置。
Gateway Out block
1.block特性
与上一个block相反,Gateway Out block是完成从FPGA数据类型到Simulink数据类型的转换。其具有如下特性:
定义了FPGA设计中的输出端口,修改block名称即可修改HDL端口信号名称。Gateway Out还可以只作为测试端口,此时只是为了观察DSP系统内部,不会导出到FPGA设计中。
使用System Generator生成testbench时,软件会把从Gateway Out block输出的Simulink仿真信号存储到dat文件中,在testbench中调用来帮助设计中检查设计是否符合预期。
2.参数设置
当System Generator设计的DSP系统后续还接入了其它Simulink仿真模块时(即System Generator仅作为Simulink仿真的一个子系统),需要选中“Propagate data type to output”,将FPGA数据类型转换为相应的Simulink数据类型。
当选中“Translate into output port”时,该block将会作为FPGA设计的输出端口;如果没有选中,则该block会被视作为了观察DSP系统内部信号的测试端口,同时该block在Simulink中显示为灰色,如下图:
“Implementation”标签下的设置与上一个block基本相同,不再赘述。
文章来源:FPGADesigner的博客
*本文由作者授权转发,如需转载请联系作者本人