在设计FPGA时,大多数采用Verilog HDL或者VHDL语言进行设计(本文重点以verilog来做介绍)。设计的电路都是利用FPGA内部的LUT和触发器等效出来的电路。
数字逻辑电路分为组合逻辑电路和时序逻辑电路。时序逻辑电路是由组合逻辑电路和时序逻辑器件构成(触发器),即数字逻辑电路是由组合逻辑和时序逻辑器件构成。所以FPGA的最小单元往往是由LUT(等效为组合逻辑)和触发器构成。
在进行FPGA设计时,应该采用组合逻辑设计还是时序逻辑?这个问题是很多初学者不可避免的一个问题。
设计两个无符号的8bit数据相加的电路。
组合逻辑设计代码:
序逻辑对应代码为:
module adder_8bit (
input wire clk,
input wire rst_n,
input wire [7:0] dataa,
input wire [7:0] datab,
output reg [8:0] datas
);
always @ (posedge clk, negedge rst_n) begin
if (rst_n == 1'b0)
datas <= 9'd0;
else
datas <= dataa + datab;
end
endmodule
对应的电路为:
可以思考一下&#