一、撮合系统概述

1.1 什么是撮合系统

撮合系统,说白了就是「买卖双方的配对引擎」。

你想想看,在交易所里,有人想买股票,有人想卖股票。谁跟谁成交?价格怎么定?顺序怎么排?这些事都得有个规则。撮合系统就是干这个的。

我做过几个交易系统的项目,每次跟客户聊,他们最关心的就两件事:快不快准不准。快,指的是延迟要低;准,指的是不能出错。这两点,恰恰是FPGA的强项。

一个典型的撮合流程是这样的:

  • 接收订单(买/卖,价格,数量)
  • 检查订单合法性(资金够不够?股票有没有?)
  • 进入订单簿排队(价格优先,时间优先)
  • 尝试匹配(有没有能成交的对手单?)
  • 生成成交回报(谁买了多少,谁卖了多少)

嗯,看起来不复杂对吧?但难点在于:每秒可能有几十万笔订单涌进来。CPU处理这个量级,延迟会飙到微秒甚至毫秒级。而FPGA,可以做到纳秒级。

核心指标: 撮合系统的性能通常用「吞吐量」和「延迟」来衡量。吞吐量是每秒能处理多少笔订单,延迟是一笔订单从进来到出去花了多少时间。

1.2 FPGA为什么适合做撮合

这个问题,我当年刚接触FPGA时也问过自己。后来做了几个项目才真正理解。

原因一:流水线架构

CPU是串行执行的——一条指令处理完,才能处理下一条。FPGA不一样,它可以搭一条流水线:订单进来,第一步检查合法性,第二步查价格,第三步匹配...每个步骤都在不同的硬件模块里同时跑。

我曾经在一个项目中,用FPGA实现了8级流水线的撮合引擎。结果呢?每时钟周期就能处理一笔订单。CPU要几十个时钟周期才能干完的事,FPGA一个周期就搞定了。

原因二:确定性延迟

CPU有缓存命中、分支预测、操作系统调度...这些都会导致延迟抖动。有时候快,有时候慢。做交易的人最怕这个——你不知道下一秒会不会卡一下。

FPGA没有操作系统,没有缓存未命中。它的延迟是完全确定的。你设计好逻辑,延迟就是固定的几个时钟周期。这一点,在金融交易里太重要了。

原因三:并行处理

撮合系统里有很多独立的任务:订单接收、风控检查、价格匹配、成交回报...CPU只能一个一个来。FPGA可以同时干。

我习惯把FPGA比作「硬件上的多线程」——只不过这个线程不是软件线程,而是真正的硬件并行。

个人经验: 我建议初学者先别急着写代码。先想清楚你的撮合逻辑能不能拆成流水线。能拆,FPGA就适合;拆不了,还是用CPU吧。

1.3 课程目标

这门课的目标很明确:让你能独立设计一个基于FPGA的撮合系统

具体来说,学完这门课,你应该能:

  1. 理解撮合系统的核心算法(价格优先、时间优先)
  2. 掌握FPGA设计的基本方法(流水线、状态机、FIFO)
  3. 能写出可综合的Verilog代码(不是仿真玩玩,是真的能上板子跑的)
  4. 会做时序分析和优化(保证你的设计能跑在目标频率上)
  5. 了解常见的坑和避坑方法(我踩过的坑,你就不用再踩了)

注意: 这门课不是FPGA入门课。你需要有基本的Verilog基础,知道什么是寄存器、组合逻辑、时钟。如果你还不会写一个简单的计数器,建议先补一下基础。

1.4 学习路径

我把课程分成了四个阶段,每个阶段都有明确的目标:

阶段 内容 目标
第一阶段 撮合系统基础 + FPGA架构 理解业务逻辑和硬件映射
第二阶段 核心模块设计(订单簿、匹配引擎) 能写出可综合的RTL代码
第三阶段 系统集成与优化 能搭出完整的撮合系统
第四阶段 验证与调试 能定位问题、优化性能

我个人建议的学习节奏是:每周一章,边学边练。光看不练,等于白学。每章后面的练习一定要做,哪怕只是改改参数跑个仿真。

1.5 知识体系总览

下面这张图,是我画的本课程知识体系。你可以把它当成一张地图,学完一章就回来看看,知道自己走到哪了。

FPGA撮合系统知识体系 撮合系统基础 FPGA架构基础 Verilog设计基础 订单簿设计 匹配引擎 风控模块 系统集成与流水线设计 仿真验证 · 时序分析 · 上板调试

这张图你看懂了吗?从下往上看,就是我们的学习路径。先打基础,再搞核心模块,然后集成,最后验证。每一步都踩实了,再往前走。

一个小建议: 学完每一章,试着在图上标注你已经掌握的部分。这样你会有成就感,也知道自己还差什么。

1.6 写在开头的话

做FPGA撮合系统,说实话,门槛不低。你既要懂交易业务,又要懂硬件设计。但反过来想,正因为门槛高,会的人少,你学会了才有竞争力。

我记得自己第一次做撮合项目时,光是订单簿的数据结构就改了三版。第一版用数组,发现查找太慢;第二版用链表,发现FPGA里不好实现;第三版用二叉堆,终于跑通了。这些经验,我会在后面的章节里一一分享。

好了,第一章就到这里。下一章,我们开始讲订单簿的数据结构——这是撮合系统的核心,也是很多人容易搞混的地方。


公众号:蓝海资料掘金营,微信deep3321