第一章:Verilog基础与量化交易概述
大家好,我是你们的FPGA讲师。在量化交易这个圈子里摸爬滚打了十几年,我越来越觉得FPGA是个被低估的利器。今天咱们就从最基础的Verilog开始,聊聊它怎么跟量化交易搭上关系。
1.1 Verilog的前世今生
Verilog诞生于1984年,比我还大几岁。当时Gateway Design Automation公司搞出了这门硬件描述语言,说白了就是用来描述数字电路长什么样的。后来被Cadence收购,再后来成了IEEE标准(1364)。
我个人习惯把Verilog理解成「硬件的C语言」。你写C代码是在描述软件逻辑,写Verilog是在描述硬件电路。这个思维转变很重要——我见过太多软件工程师转FPGA时栽在这个坑里。
核心要点:Verilog不是编程语言,是硬件描述语言。你写的每一行代码,最终都会变成实实在在的门电路。
1.2 FPGA在量化交易中的优势
量化交易对速度的追求,说白了就是「快鱼吃慢鱼」。FPGA为什么能在这行吃得开?我总结了三个核心优势:
- 超低延迟:FPGA的延迟是纳秒级的,CPU是微秒级的。在抢单交易中,这差距就是胜负手。
- 确定性执行:FPGA没有操作系统中断,没有缓存未命中。每次执行的时间都是固定的,这对高频策略至关重要。
- 并行处理:FPGA可以同时处理多个数据流。比如同时监控100只股票的行情,CPU得排队,FPGA可以并行。
我在2015年参与过一个项目,用FPGA做行情解码。当时CPU方案延迟在10微秒左右,换成FPGA后直接压到200纳秒。嗯,这就是硬件的魅力。
避坑指南:我曾经以为FPGA能搞定所有量化场景。后来发现,策略复杂度高、需要频繁迭代的场景,还是CPU更合适。FPGA适合做「固定逻辑、极致速度」的部分。
1.3 开发环境Vivado安装
Vivado是Xilinx(现在叫AMD)的FPGA开发工具。安装过程其实不复杂,但有几个坑我得提前说:
- 版本选择:建议用Vivado 2020.1以上版本。太老的版本对新器件支持不好。
- 安装包大小:完整版大概50GB。如果只是学基础,选「Vivado HL WebPACK」就够了,20GB左右。
- 系统要求:Windows 10/11 64位,或者Ubuntu 18.04以上。内存至少16GB,建议32GB。
- 安装路径:不要有中文路径!不要有空格!我见过有人因为路径里有「新建文件夹」导致编译报错,查了一整天。
重要提醒:安装过程中会提示选择器件。如果你用的是开发板,记得选对型号。比如Nexys A7-100T,就选xc7a100tcsg324-1。
1.4 第一个LED闪烁程序
好了,理论说够了,咱们来写点实际的。每个FPGA工程师的入门仪式,都是让LED闪烁。这就像学编程时的「Hello World」。
先看代码:
module led_blink (
input wire clk, // 系统时钟,50MHz
input wire rst_n, // 复位信号,低电平有效
output reg led // LED输出
);
// 分频计数器
reg [24:0] cnt;
always @(posedge clk or negedge rst_n) begin
if (!rst_n)
cnt <= 25'd0;
else
cnt <= cnt + 1'b1;
end
// 取最高位作为LED输出
always @(posedge clk or negedge rst_n) begin
if (!rst_n)
led <= 1'b0;
else
led <= cnt[24];
end
endmodule
这段代码干了什么呢?说白了就是让LED以人眼可见的频率闪烁。50MHz时钟下,计数器从0跑到33,554,431(2^25-1),大概需要0.67秒。取最高位,LED就按这个频率亮灭。
我个人习惯在写代码前先画个时序图。你想想看,如果连信号什么时候变化都搞不清楚,写出来的代码能靠谱吗?
关键点:always块里的赋值用「<=」非阻塞赋值。这是Verilog的硬性规定,跟C语言的「=」完全不一样。我刚开始学的时候总写错,后来养成了习惯:组合逻辑用「=」,时序逻辑用「<=」。
下面这张图展示了本章的知识体系:
这张图把本章的知识点串起来了。你会发现,Verilog历史是基础,FPGA优势是动力,Vivado是工具,LED程序是实践。四者缺一不可。
个人建议:初学者别急着跑复杂代码。先把LED闪烁吃透,理解时钟、复位、计数器这三个核心概念。我当年就是靠这个程序,才真正理解了「硬件并行」是怎么回事。
好了,第一章的内容就到这里。记住,FPGA学习是个循序渐进的过程,别指望一口吃成胖子。下一章咱们会深入Verilog的语法细节,到时候见。