2017-12-03 1 views
0

Verilog에서 조정자를 시도하고 있습니다. 하지만 난 점점 오류입니다 : "endmodule"Verilog에서 ModelSim의 "endmodule"오류가 발생했습니다

이 내 코드입니다 : 내가 라운드 로빈 우선 순위 중재 모듈을 원하는

module rr_arbiter (
clk, // positive edge trigger 
reset, // negative edge trigger 
req,grant, 
priority, priority_req); 

input clk, reset; 
input [3:0]req; 
input priority; 
input [1:0] priority_req; 

output [3:0] grant; 
integer i; 
[email protected](posedge clk) begin 

if (reset) begin 
//all grant = 0 
for(i=0;i<4;i=i+1) 
grant[i] = 0; //reset 
end 

else 
if(priority == 0)begin 
//0,1,2,3,0,1,2,3 .... 
for(i=0;i<4;i=i+1) 
if(req[i] == 0) 
grant[0] <= req[i]; 
else if(req[i] == 1) 
grant[1] <= req[i]; 
else if(req[i] == 2) 
grant[2] <= req[i]; 
else if(req[i] == 3) 
grant[3] <= req[i]; 
end 

if(priority == 1)begin 
if (reset) begin 
//all grant = 0 
for(i=0;i<4;i=i+1) 
grant[i] = 0; //reset 
end 

if(priority_req==0)begin //0 
//counter : 0 0 1 2 3 0 0 1 2 3 .. 
for(i=0;i<4;i=i+1) 
if(req[i] == 0) 
grant[0] <= req[i]; 
grant[1] <= req[i]; 
if(req[i] == 1) 
grant[2] <= req[i]; 
if(req[i] == 2) 
grant[3] <= req[i]; 
if(req[i] == 3) 
grant[0] <= req[i]; 
end 

else if(priority_req==1)begin 
//counter : 0 1 1 2 3 0 1 1 2 3 .. 
for(i=0;i<4;i=i+1) 
if(req[i] == 0) 
grant[0] <= req[i]; 
if(req[i] == 1) 
grant[1] <= req[i]; 
grant[2] <= req[i]; 
if(req[i] == 2) 
grant[3] <= req[i]; 
if(req[i] == 3) 
grant[0] <= req[i]; 
end 
else if(priority_req==2)begin 
//counter : 0 1 2 2 3 0 1 2 2 3 .. 
for(i=0;i<4;i=i+1) 
if(req[i] == 0) 
grant[0] <= req[i]; 
if(req[i] == 1) 
grant[1] <= req[i]; 
if(req[i] == 2) 
grant[2] <= req[i]; 
grant[3] <= req[i]; 
if(req[i] == 3) 
grant[0] <= req[i]; 
end 

else if(priority_req==3)begin 
//counter : 0 1 2 3 3 0 1 2 3 3 .. 
for(i=0;i<4;i=i+1) 
if(req[i] == 0) 
grant[0] <= req[i]; 
if(req[i] == 1) 
grant[1] <= req[i]; 
if(req[i] == 2) 
grant[2] <= req[i]; 
if(req[i] == 3) 
grant[3] <= req[i]; 
grant[0] <= req[i]; 
end 

else if(priority_req>3)begin 
for(i=0;i<4;i=i+1) 
grant[i] = 0; 
end 
end 

endmodule 

.

막대기의 끝 부분을 잘못 기입했는지 확실하지 않습니다. 인용문에 문제가 있거나 처음부터 다시 코딩해야하는지 여부가 문제라면 걱정됩니다.

답변

0

Verilog 코드의 많은 구문 오류는 문제가 발생한 직후의 줄을 가리 킵니다. Verilog 모드를 사용하는 편집기에서 적절한 코드 들여 쓰기를 연습하면 endmodule 앞에 end이 누락되었음을 알 수 있습니다.

기타 오류 : 보조금을 reg으로 정의해야합니다. 또한 req[i] == 3 코드가 많이 있습니다. 하지만 req [i]는 하나의 비트입니다. casez 성명서를 살펴보십시오.