Skip to content

Commit

Permalink
chapter1 first revision
Browse files Browse the repository at this point in the history
  • Loading branch information
Zaoldyeckk committed Jun 10, 2018
1 parent 67d4bd6 commit 25e4cab
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions 01-Introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -147,9 +147,9 @@ Vivado HLS工具通过计算一个任务输出到输入之间这个过程需要

### 1.4.2 面积和产力的取舍

为了更深入的讨论使用HLS工具过程中的问题,我们需要分析一个简单但很常见的硬件函数——有限脉冲响应(FIR)滤波器。FIR会对输入做固定系数下的卷积,它可以被用作充当各氏滤波器(高通,低通,带通),最简单的FIR可能就是一个移动平均滤波器。有关FIR的具体内容会在第二章展开,在这里我们从高层简要的谈一下。
为了更深入的讨论使用HLS工具过程中的问题,我们需要分析一个简单但很常见的硬件函数——有限脉冲响应(FIR)滤波器。FIR会对输入做固定系数下的卷积,它可以被用作充当各式滤波器(高通,低通,带通),最简单的FIR可能就是一个移动平均滤波器。有关FIR的具体内容会在第二章展开,在这里我们从高层简要的谈一下。

```
```c

#include "stdio.h"

Expand Down Expand Up @@ -180,7 +180,7 @@ int main() {

第一种可能的产出电路是按照顺序执行每行代码产出的电路,这时候工具就像一个简单的RISC处理器。下面的图片1.9中的代码是图片1.8中的代码在赛灵思Microblaze处理器下的汇编代码版本。虽然已经经过了优化,但还是有很多指令用来执行计算数组索引(array index)和控制循环。这样的指令我们假设它每个循环都要执行一次,那么我们在49个循环之后才能得到滤波器得出的结果。我们可以很明了的得到一个结果,那就是一个周期内执行的指令数是影响性能的一个重要的壁垒。有时候对于一个架构的提升就是让它处理的指令变得更复杂,让同一个指令能做的事情变得更多。HLS的一个特点就是在决定结构上的一些此消彼长的设计时,不再需要考虑让它适用于指令集的结构限制。在HLS设计中,设计出一个在同周期内执行成百上千个RISC级指令外加几百个周期程度流水的系统是非常常见的。

```
```asm
fir:
.frame r1,0,r15 # vars= 0, regs= 0, args= 0
.mask 0x00000000
Expand Down Expand Up @@ -327,6 +327,8 @@ void block_fir(int input[256], int output[256], int taps[NUM_TAPS],
| 一同仿真| | | | | x | | | | | |
| 实时计算| | | | | | x | | x |x | |
| 接口交互| | | | | | | | x | | ||


表格1.1:一个优化策略和章节的对照表

第三章到第五章可以算作一个系列,这个系列着重于建造数字信号处理模块(CORDIC,DFT,FFT)。这些章节都侧重于某一个优化策略,比如第三章的带宽优化,第四章的数组优化,第五章的数组优化和任务流水。以第四章DFT为例,第四章介绍了数组优化,特别介绍了怎样利用数组分离来提升片上内存带宽。这一章也提到了展开循环和循环流水,并且讲述了让这些优化共存的方法。
Expand Down

0 comments on commit 25e4cab

Please sign in to comment.