- 代码实现对OUTPUT_NODES个32位浮点数进行RELU操作。
- 32位浮点数的二进制表示遵循 IEEE 754 标准,通常称为单精度浮点数。这个标准定义了浮点数的表示方法,具体分为三个部分:
- 符号位 (1 bit): 用于表示浮点数的正负。( 0 表示正数,1 表示负数)
- 指数位 (8 bits): 用于表示指数部分,并采用偏移量 (bias) 编码。
- 尾数 (或称为有效数字, 23 bits): 用于表示浮点数的有效数字部分。
Module
// https://github.com/omarelhedaby/CNN-FPGA/blob/master/Final%20Code%20Files/Part%205-%20Integration/activationFunction.v
module activationFunction(clk, reset, en, input_fc, output_fc);
// 模块定义,名称为 activationFunction
// 输入信号:
// - clk: 时钟信号
// - reset: 复位信号
// - en: 使能信号
// - input_fc: 输入数据,宽度为 DATA_WIDTH*OUTPUT_NODES
// 输出信号:
// - output_fc: 输出数据,宽度为 DATA_WIDTH*OUTPUT_NODES
// 参数定义
parameter DATA_WIDTH = 32; // 数据宽度,默认为 32 位
parameter OUTPUT_NODES = 32; // 输出节点数,默认为 32 个
// 输入信号定义
input clk, reset, en; // 时钟信号、复位信号和使能信号
input [DATA_WIDTH*OUTPUT_NODES-1:0] input_fc; // 输入数据,总宽度为 DATA_WIDTH*OUTPUT_NODES
output reg [DATA_WIDTH*OUTPUT_NODES-1:0] output_fc; // 输出数据,总宽度同样为 DATA_WIDTH*OUTPUT_NODES
// 内部变量声明
integer i; // 循环变量 i
// 在时钟负边沿或复位信号正边沿触发的过程块
always @ (negedge clk or posedge reset) begin
// 检查复位信号
if (reset == 1'b1) begin
// 如果复位信号为高电平(1),则将输出数据清零
output_fc = 0;
end else begin