Page 120 - 《软件学报》2020年第10期
P. 120
3096 Journal of Software 软件学报 Vol.31, No.10, October 2020
Fig.6 Code overview
图 6 代码流程总览
Table 2 Resource consumptions of both variants (generated Verilog code and direct Verilog code)
表 2 生成的 Verilog 代码与手写 Verilog 代码的资源消耗对比(生成 Verilog 代码/手写 Verilog 代码)
模块 #LUT #Register 模块 #LUT #Register
RAM 3/3 3/3 Encoder 2/2 0/0
ROM 0/0 2/2 Mealy FSM 3/3 1/1
FIFO 9/9 17/17 常用电路 Moore FSM 11/11 7/7
基础电路 ADD 5/5 6/6 Hash Map 119/119 111/111
SUB 5/5 6/6 Bitonic Sort 40/40 0/0
AND 1/1 1/1 复杂电路 MIPS CPU 1237/1237 1112/1112
OR 1/1 1/1 SQL Filter 417/417 198/198
我们发现,ScalaHDL 和 Verilog 在定义表中电路时完全消耗相同的硬件资源.由于 ScalaHDL 与 Verilog 处
于相同的抽象层次,这样的结果与预期相吻合.
为了评估 VeriScala框架的实用性,我们基于 VeriScala构建了典型的数据库过滤器加速系统,该应用使用Scala
编写,将 Scala 管理的主机数据库表项发送给 FPGA 处理,再读回过滤后的数据.数据传输通过 PCIE 3.0 接口完成.
作为对比基准,我们同样基于 Scala 实现了使用 CPU 完成的过滤程序.该测试使用的硬件配置见表 3.
Table 3 Experiment environment
表 3 测试环境
类型 型号 核心数 频率 功率(w)
CPU I5 4590 4 3.3GHz 84
FPGA Kintex-7 XC7K325T 1 250MHz 3.534