У меня проблема с использованием выходных данных из субмодуля (encrypt_system), чтобы стать входом в новом субмодуле.
Ранее я успешно генерировал 228-битный двоичный файл (называемый secret_key) в системе. Но затем, когда я пытался использовать этот secret_Key в качестве входа для нового подмодуля, симуляция показала, что данные не генерируются. Я не знаю, в чем проблема.
По сути, мой проект состоит в том, чтобы использовать secret_key и комбинировать (x-or) с любыми данными (называемыми plaintext_data) для создания зашифрованного текста.
Это моя кодировка:
-------top module-------
module Communication_security(
//Declare all I/Os
Start,
Clk,
Reset,
Secret_Key,
Plaintext_data,
Ciphertext
);
input Clk, Reset, Start, Plaintext_data;
wire Plaintext_data;
output Secret_Key, Ciphertext;
//Declare all submodule
Encryp_System Es(
.Start(Start),
.Clk(Clk),
.Reset(Reset),
.Secret_Key(Secret_Key)
);
Combine_bit Cb(
.Start(Start),
.Clk(Clk),
.Reset(Reset),
.Secret_Key(Secret_Key),
.Plaintext_data(Plaintext_data),
.Ciphertext(Ciphertext)
);
endmodule
----sub module to combine the bits (secret_key ^ Plaintext_data)------
module Combine_bit(
Clk,
Reset,
Secret_Key,
Plaintext_data,
Start,
Ciphertext
);
input Clk, Reset, Secret_Key, Start, Plaintext_data;
wire Plaintext_data;
wire Secret_Key;
output reg Ciphertext;
always @ (posedge Clk or posedge Reset)
begin
if (Reset)
begin
Ciphertext <= Secret_Key ^ Plaintext_data;
end
end
endmodule
примечание: для субмодуля encryp_system для создания secret_key ничего менять нельзя. Это уже сделано и успешно сгенерировано secret_key.
Надеюсь, кто-нибудь может мне помочь. Это просто простое кодирование, но я понятия не имею об этом.
Вот схемы RTL на том, что я сделал: