J'essaye de générer un fichier de programmation en utilisant ISE 14.7 pour certains des benchmarks fournis sur Trust-Hub.org. Je travaille avec AES-T100 qui contient une série de fichiers verilog. Je n'ai jamais travaillé avec Verilog et n'ai pas touché VHDL depuis des années.Verilog: Redeclaration illégale
En théorie, le code Verilog fourni par la confiance plaque tournante devrait fonctionner cependant essayer donne l'erreur de compilation
ERROR:HDLCompilers:27 - "../../../../../../AES-T100/src/TjIn/TSC.v" line 28 Illegal redeclaration of 'load'
Maintenant, cette erreur est assez explicite à la recherche mais à un débutant Verilog tutoriel here je peux voir la exactement la même répétition des noms de variables. Ce code verilog ci-dessous semble-t-il correct ou y a-t-il une erreur dans le code du centre de confiance?
`timescale 1ns/1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 12:20:01 03/06/2013
// Design Name:
// Module Name: TSC
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module TSC(
input rst,
input clk,
input [127:0] key,
output [63:0] load
);
reg [63:0] load;
wire [19: 0] counter;
lfsr_counter lfsr (rst, clk, counter);
always @ (posedge clk)
begin
load[0] <= key[0]^counter[0];
load[1] <= key[0]^counter[0];
load[2] <= key[0]^counter[0];
load[3] <= key[0]^counter[0];
load[4] <= key[0]^counter[0];
load[5] <= key[0]^counter[0];
load[6] <= key[0]^counter[0];
load[7] <= key[0]^counter[0];
load[8] <= key[1]^counter[1];
load[9] <= key[1]^counter[1];
load[10] <= key[1]^counter[1];
load[11] <= key[1]^counter[1];
load[12] <= key[1]^counter[1];
load[13] <= key[1]^counter[1];
load[14] <= key[1]^counter[1];
load[15] <= key[1]^counter[1];
load[16] <= key[2]^counter[2];
load[17] <= key[2]^counter[2];
load[18] <= key[2]^counter[2];
load[19] <= key[2]^counter[2];
load[20] <= key[2]^counter[2];
load[21] <= key[2]^counter[2];
load[22] <= key[2]^counter[2];
load[23] <= key[2]^counter[2];
load[24] <= key[3]^counter[3];
load[25] <= key[3]^counter[3];
load[26] <= key[3]^counter[3];
load[27] <= key[3]^counter[3];
load[28] <= key[3]^counter[3];
load[29] <= key[3]^counter[3];
load[30] <= key[3]^counter[3];
load[31] <= key[3]^counter[3];
load[32] <= key[4]^counter[4];
load[33] <= key[4]^counter[4];
load[34] <= key[4]^counter[4];
load[35] <= key[4]^counter[4];
load[36] <= key[4]^counter[4];
load[37] <= key[4]^counter[4];
load[38] <= key[4]^counter[4];
load[39] <= key[4]^counter[4];
load[40] <= key[5]^counter[5];
load[41] <= key[5]^counter[5];
load[42] <= key[5]^counter[5];
load[43] <= key[5]^counter[5];
load[44] <= key[5]^counter[5];
load[45] <= key[5]^counter[5];
load[46] <= key[5]^counter[5];
load[47] <= key[5]^counter[5];
load[48] <= key[6]^counter[6];
load[49] <= key[6]^counter[6];
load[50] <= key[6]^counter[6];
load[51] <= key[6]^counter[6];
load[52] <= key[6]^counter[6];
load[53] <= key[6]^counter[6];
load[54] <= key[6]^counter[6];
load[55] <= key[6]^counter[6];
load[56] <= key[7]^counter[7];
load[57] <= key[7]^counter[7];
load[58] <= key[7]^counter[7];
load[59] <= key[7]^counter[7];
load[60] <= key[7]^counter[7];
load[61] <= key[7]^counter[7];
load[62] <= key[7]^counter[7];
load[63] <= key[7]^counter[7];
end
endmodule
Modifier Je trouve cette discussion here qui parle de l'en-tête de style ansi. J'ai changé le haut du code du module à ceci:
module TSC(
input rst,
input clk,
input [127:0] key,
output reg [63:0] load
);
//reg [63:0] load;
wire [19: 0] counter;
Et cela a fonctionné. Est-ce que le style ci-dessus ne fonctionne pas à partir d'anciennes versions de Verilog ou quelque chose? Pourquoi publieraient-ils un code «testé» qui ne fonctionne pas si clairement?
Ce code « testé » est un mélange de vieux et ansi style, qui peut avoir travaillé dans une version d'un simulateur, mais ce n'est pas standard. – Morgan