2014-12-07 262 views
0

我試圖運行該代碼,它是給這些錯誤: 語法錯誤附近的「總是」 語法錯誤附近「endmodule」語法錯誤Verilog代碼

我不明白什麼這是錯誤的碼。這裏是代碼:

module fortran_v2(
    input clk 
    ); 
parameter N=8; 
parameter M=6; 
parameter size=1000;  
reg [N-1:0] A [0:size-1]; 
reg [N-1:0] B [0:size-1]; 
reg [M-1:0] C [0:size-1]; 
reg [M-1:0] D [0:size-1]; 
reg [15:0] k=0; 
integer open_file; 
initial begin 
open_file= $fopen("output.txt","w"); 
end 

always @ (posedge clk) begin 
if(k<1000) 
k<=k+1; 
else 
k<=1000; 
end 

always @ (posedge clk) begin 
if(k<1000) begin 
    A[k]<=$random; 
    B[k]<=$random; 
    end 

always @ (posedge clk) begin 
if (k<1000) begin 
    C[k]<=A[k]*B[k] +5; 
    D[k]<=A[k]+B[k] -5; 
    $fwrite(open_file,"A[%d",k,"]",A[k],"B[%d",k,"]",B[k],"C[%d",k,"]",C[k],"D[%d",k,"]",D[k]); 
end 
else 
    A[k]=0; 
end 
endmodule 

回答

3

如果您使用正確的縮進,則不會有任何問題。在你always塊之一,關鍵字end丟失:

always @ (posedge clk) begin 
    if(k<1000) begin 
    A[k]<=$random; 
    B[k]<=$random; 
    end 
end //missing end 
+0

糟糕!快點總是擔心:( – 2014-12-07 10:04:28

0

開始...用Verilog到底對應捲毛在大多數編程語言{...}等括號每個「開始」必須有一個「結束「與之相關聯。

-1
`timescale 1ns/1ps 
////////////////////////////////////////////////////////////////////////////////// 
// Company: 
// Engineer: 
// 
// Create Date: 13:54:23 03/14/2017 
// Design Name: 
// Module Name: hhi 
// Project Name: 
// Target Devices: 
// Tool versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision: 
// Revision 0.01 - File Created 
// Additional Comments: 
// 
////////////////////////////////////////////////////////////////////////////////// 

     module pulse(input wire [1:0] sel,   // No need for the sel to be wire 
     input clk, 
     input rst_n, 
     output reg [13:0] Q,  
     output reg pulse, 
     input input_stb,     // Input is valid 
     input output_ack,  
     output output_stb,   
     output input_ack);    // 2 Flag model 

reg s_input_ack ; 
reg s_output_stb; 
parameter get_inputs   = 4'd0, 
     counter    = 4'd1; 

always @(posedge clk , negedge rst_n) 
begin 

case (state) 
    get_inputs: 
    s_input_ack <= 1; 
    if (s_input_ack && input_a_stb) 
    begin 
    s_input_ack <= 0; 
      case(sel) 
      00: Q <= 14'd11;//00000000001010; 
      01: Q <= 14'd101;//00000001100100; 
      10: Q <= 14'd1001;//00001111101000; 
      11: Q <= 14'd10001;//10011100010000; 
      default: Q <= 14'd0;  
      endcase 
    state <= counter; 
    end 

    counter: 
     begin 
     s_output_stb <= 1; 
     if (s_output_stb && output_z_ack) 
      begin 
         s_output_stb <= 0; 

       if(Q != 14'h1 && Q != 14'h0) 
        begin 
        Q <= Q - 1'b1; 
        pulse <= 1'b1; 
        end 
       else 
        begin 
        pulse <= 1'b0; 
        end 
       end 
     state <= get_inputs; 
     end 

endcase 
     if(!rst_n) 
    begin 
     Q <= 14'h0; 
     pulse <= 1'b0; 
       s_input_ack <= 0; 
       s_output_stb <= 0; 
    end 
     assign input_ack = s_input_ack; 







error in <= synbol 
+1

我不明白這是如何回答這個問題的。你能否在答案中提供一些細節? – 2017-03-16 04:46:35