2016-02-23 3 views
0

Я искал какой-то код Verilog и наткнулся на то, чего я никогда раньше не видел, и не смог найти информацию об Интернете.Уточнение синтаксиса модуляции модуля Verilog

module FA_n_bit(c_out, Sum, A, B, c_in); 

parameter word_size = 4;  // the default size of this n bit adder 

input  [word_size-1:0]  A, B; 
input       c_in; 

output  [word_size-1:0]  Sum; 
output       c_out; 

wire  [word_size-1:0] c_inner; 

// the c_out of the ith 1-bit full aderr is the c_in of the (i+1)th full adder 
FA_one_bit fullAdder [word_size-1:0](
    {c_out, c_inner[word_size-1:1]}, 
    Sum, 
    A, 
    B, 
    {c_inner[word_size-1:1], c_in} 
); 

endmodule

Я понимаю синтаксис параметра, но я с трудом понимая, что FA_one_bit fullAdder [word_size-1: 0] (...) синтаксис делает.

всякая помощь была бы принята с благодарностью. До сих пор я думаю, что его объявление 4 fullAdders, но я теряюсь при конкатенации c_out и c_inner [word_size-1: 1].

ответ

1

FA_one_bit - это еще один модуль, созданный внутри модуля FA_n_bit. Имя экземпляра: fullAdder. Кроме того, [word_size-1:0] указывает, что word_size создано несколько экземпляров.

В Verilog, когда вы инстанцировании модуль, это означает, что вы добавляете дополнительное оборудование к доске. Здесь добавляются 4 добавленных дополнения.

сочленения выражены с использованием символов фигурных скобок { и }, с запятыми, разделяющие выражениями внутри. Ссылаясь на SystemVerilog LRM IEEE 1800-2012, раздел 11.4.12:

конкатенации является результатом соединения вместе бит, вытекающих из одного или нескольких выражений. Конкатенация должна быть выражена с использованием символов скобок {и} с запятыми, разделяющими выражения .

// if a, b and c are 8-bit numbers, the results has 24 bits 
For Example: {a, b[3:0], c, 4'b1001} 

Здесь {c_out, c_inner[word_size-1:1]} означает 1-бит c_out и word_size-1 биты c_inner от MSB сцепляются. Это приведет к сигналу шириной word_size.

Еще один пример из LRM:

{a, b[3:0], w, 3'b101} 
// equivalent to the following 
{a, b[3], b[2], b[1], b[0], w, 1'b1, 1'b0, 1'b1} 

СЗБА каскадных сигнал c_out и MSB-1 положения для c_inner[word_size-1] и LSB сигнала является c_inner[1].

Для получения дополнительной информации о массиве экземпляров см. Ссылку Array of modules. Обратитесь к разделу IEEE 1800-2012 раздела 11.4.12 для оператора конкатенации.