объединить немного в verilog - PullRequest
0 голосов
/ 11 мая 2018

У меня проблема с использованием выходных данных из субмодуля (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 на том, что я сделал: enter image description here

1 Ответ

0 голосов
/ 11 мая 2018

Вы определили только сигналы шириной 1 бит.
Я могу видеть из диаграммы, что plaintext_data имеет ширину 8 бит. Но в вашем модуле это только один бит. Вы говорите, что ваш secret_key 228 бит, поэтому вы должны сделать сигнал с этой шириной.

Я также предлагаю вам начать использовать новый синтаксис порта Verilog. Это предотвращает ошибку, так как вся информация находится в одном месте. Сейчас я предполагаю, что все остальные сигналы имеют ширину в один бит. Таким образом вы получаете:

module Communication_security(
   input          Clk,    
   input          Reset,  

   input          Start,
   output [227:0] Secret_Key,

   input  [  7:0] Plaintext,
   output [  7:0] Ciphertext
);
...