1. 项目概述
在边缘计算和实时控制领域,FPGA因其并行计算能力和低延迟特性正成为强化学习部署的新宠。这个项目展示了如何用Verilog在FPGA上实现Q-Learning算法——从Q表存储设计到完整的ε-贪心策略控制器,为硬件加速强化学习提供了可复用的设计范式。
2. 核心模块设计
2.1 Q表存储架构
FPGA中的Q表采用Block RAM实现,关键设计包括:
verilog复制module q_table #(
parameter NUM_STATES = 16,
parameter NUM_ACTIONS = 4,
parameter DATA_WIDTH = 16
)(
input wire clk,
input wire we,
input wire [ADDR_WIDTH-1:0] addr_rd,
input wire [ADDR_WIDTH-1:0] addr_wr,
input wire [DATA_WIDTH-1:0] data_in,
output reg [DATA_WIDTH-1:0] data_out
);
// 状态-动作对地址计算:addr = state*NUM_ACTIONS + action
// 使用移位替代乘法(当NUM_ACTIONS为2的幂时)
endmodule
实际工程中建议采用双端口RAM,允许同时读写不同地址,吞吐量提升40%以上
2.2 时序差分(TD)计算
TD误差计算模块采用Q7.8定点数格式:
verilog复制module td_error_calc (
input wire signed [15:0] reward, // Q7.8格式
input wire signed [15:0] gamma, // 0.9→230
input wire signed [15:0] max_q_next,
input wire signed [15:0] q_current,
output w
