基于HDL的HDMI编码器设计与实现
1. 字符ROM HDL分析
字符ROM HDL代码用于管理四个字体查找表(LUT)。代码首先进行端口定义,如时钟(CLK)和字体选择开关(SW)。使用7位来访问ASCII字符,行和列各用3位。每个时钟周期的输出仅为单个位。
以下是部分关键代码:
word3 <= rom3[address_row];
end
always @*
case (SW[1:0])
2'b00 : word <= word0;
2'b01 : word <= word1;
2'b10 : word <= word2;
default : word <= word3;
endcase
always @ (posedge CLK) begin // delay for column values
col_d <= COL;
col_dd <= col_d;
end
// pick the bit needed
assign Q = word[~col_dd];
endmodule
代码中,初始部分用于将四种字体加载到ROM内存中,每种字体都有自己的内存初始化文件,在Vivado中建议使用MIF扩展名。由于现代FPGA只有同步内存,所以根据地址和行将一个字从内存加载到寄存器中。接下来的 always
块包含一个基于SW输入设置的4选1多路复用器。再接下来的 always
块实现了列选择的2个时钟周期延迟,因为在显示器上从左到右书写,所以