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
   115   116   117   118   119   120   121   122   123   124   125