深入浅出玩转FPGA阅读笔记(5):可综合语法子集

一、模块声明类语法

module…endmodule

二、端口声明类语法

input、output、inout

三、参数定义

parameter:用于定义一些常量

四、信号类型

wire、reg

五、比较判断

if …else
case…default…endcase

六、循环语句

for

七、任务定义

task…endtask,通常用于组合逻辑电路。

module EXAMPLE (A, B, CIN, S, COUT); 
input [3:0] A, B; 
input CIN; 
output [3:0] S; 
output COUT; 
reg [3:0] S; 
reg COUT; 
reg [1:0] S0, S1, S2, S3; 
 
task ADD; 
input A, B, CIN; 
output [1:0] C; 
reg [1:0] C; 
reg S, COUT; 
begin
	S = A ^ B ^ CIN; 
	COUT = (A&B) | (A&CIN) | (B&CIN); 
	C = {
    
    COUT, S}; 
	end 
endtask 
 
always @(A or B or CIN) begin 
	ADD (A[0], B[0], CIN, S0); 
	ADD (A[1], B[1], S0[1], S1); 
	ADD (A[2], B[2], S1[1], S2); 
	ADD (A[3], B[3], S2[1], S3); 
	S = {
    
    S3[0], S2[0], S1[0], S0[0]}; 
	COUT = S3[1]; 
end 
endmodule

八、连续赋值assign,问号表达式(?:)

九、always语句块

十、运算操作符

+、-、*、/、!、&、|…

十一、赋值符号=、<=

猜你喜欢

转载自blog.csdn.net/tanfuz/article/details/112642989