Platform Supported Package (PSP) 的作用无非两点:
1) PSP描述每一个特定Platform的配置,CoDeveloper 会参考PSP生成特定Platform的硬件描述语言
2) PSP用于CoDeveloper与第三方设计工具间的交互
简而言之,PSP定义了Impulse C中co_stream,
co_memory, co_register等I/O channels怎么与特定Platform I/O devices之间的连接。
Comp.vhd 文件中包括Process(形参) 编译后生成的Entity(端口);
Top.vhd 包括上面提到的Entity,
以及从Impulse C库调用的端口描述,上图显示该Entity有一个输入stream端口和一个输出signal端口;
Impulse_wrap.vhd (bus wrapper)
描述了Impulse C标准库中被调用的I/O端口怎么与Platform实际的I/O交互
正如前面提到,co_stream端口被实例化成handshake
PORT (en, eos, rdy, data). 同时在create
stream的时候,可以通过调节buffersize这个参数, 生成用于连接两个processes间的buffer。
这个buffer被实例化成FIFO, 主要用于processes(通过stream相连)间的同步,但会消耗register资源;
co_register(input)端口被实例化成en,
data PORT.
co_register(output)端口被实例化成value PORT.
co_signal(input)端口被实例化成en,
data PORT.
co_signal(output)端口被实例化成en, rdy,
data PORT.
co_memory
(to be developed)
Stream通常从memory读写数据,因为off
chip memory与FPGA通常需要FIFO同步,故stream与memory的通信通常可以简化为stream与FIFO的通信。事实上,不同Platform常提供FIFO类型的IP来负责向FPGA传递数据。BUS wrapper的主要作用就是协调协调FIFO与stream间的通信,根据stream的状态(rdy), 来控制FIFO的数据流。
inp_stream_intfc.vhd,
out_stream_intfc.vhd分别是协调rd/wr FIFO与in/out Stream的接口文件(Impulse C库)。Bus wrapper是FPGA上最顶层的设计,封装了interface files, 用户top level design.
我理解的PSP核心任务就是针对Process/Entity不同类型的端口,链接(或生成) Impulse C对应端口库文件,生成top level user design的HDL描述,最终由Bus wrapper封装top level HDL和接口文件。
文章评论(0条评论)
登录后参与讨论