Перейти к содержанию
    

Реализация алгоритма на логически элементах

Возможна ли реализация параллельной работы участков схемы, как в жесткой логике.

А внутри нее и есть жесткая логика, соединения между которой Вы описываете на том же Verilog-е. Все выражения языка, как то "A+B", например, или "if / else", транслируются синтезатором в различные схемотехнические элементы, в данном случае, сумматор и мультиплексор.

 

Как раз, Ваш цикл, очень хороший пример.

 

for(i=0; i<4; i=i+1)

begin

if(in_b)

shift=shift+1;

end

 

это Вы описали последовательно соединенные инкременторы и мультиплексоры, то есть, по сути, такую схему:

 

// MUX( sel,A,B ) - мультиплексор, выполняющий ф-цию sel ? B:A

sum_0 = MUX(in_b[0], 0, 1)

sum_1 = MUX(in_b[1], sum_0, sum_0+1)

sum_2 = MUX(in_b[2], sum_1, sum_1+1)

sum_3 = MUX(in_b[3], sum_2, sum_2+1)

shift = MUX(in_b[4], sum_3, sum_3+1)

 

 

А можете сделать то-же, но параллельно:

 

wire [1:0] shift_0, shift_1;

wire [2:0] shift;

// сумматор #1 ( A+B+CARRY )

assign shift_0 = in_b[0] + in_b[1] + in_b[2];

// полусумматор #2 ( A+B )

assign shift_1 = in_b[3] + in_b[4];

// сумматор результата

assign shift = shift_0 + shift_1;

 

Да и в Вашей схеме ( которую Вы описали там - http://electronix.ru/forum/index.php?showt...p;#entry1291840 ), к примеру, position и shift вычисляются совершенно параллельно, несмотря на то, что описаны одно после другого - так как вычисление каждого из них не зависит от результата другого - то и синтезируются они в две параллельно работающие подсхемы. Хорошо запомните - Verilog - это описание схемы на языке, внешне похожим на язык программирования. Но не программирование - так как нет исполнительного устройства, на котором эта программа исполняется. Синтезатор синтезирует схему по Вашему описанию, которая работает так, как Вы описали.

 

Кстати. Если синтезатору дать в качестве библиотеки (в ней описывается функциональность элементов самого низкого уровня, которые реализуемы в технологии) список микросхем, например, серии 74HCxxxx, вместо списка вариантов внутренностей FPGA, то синтезатор построит схему прямо на них по Вашему описанию.

 

вот как-то так выглядит результат работы синтезатора:

.......
         (instance AND2_t10 (viewRef PRIM (cellRef AND2 (libraryRef LUCENT)))
         )
         (instance INV_1 (viewRef PRIM (cellRef INV (libraryRef LUCENT)))
         )
         (instance AND2_t9 (viewRef PRIM (cellRef AND2 (libraryRef LUCENT)))
         )
         (instance INV_0 (viewRef PRIM (cellRef INV (libraryRef LUCENT)))
         )
         (instance OR2_t8 (viewRef PRIM (cellRef OR2 (libraryRef LUCENT)))
         )
         (instance XOR2_t7 (viewRef PRIM (cellRef XOR2 (libraryRef LUCENT)))
         )
         (instance XOR2_t6 (viewRef PRIM (cellRef XOR2 (libraryRef LUCENT)))
......
         (net fifo_wr_en (joined
          (portRef fifo_wr_en)
          (portRef A (instanceRef AND2_t10))
         ))
         (net invout_1 (joined
          (portRef Z (instanceRef INV_1))
          (portRef B (instanceRef AND2_t10))
         ))
         (net wren_i (joined
          (portRef Z (instanceRef AND2_t10))
          (portRef B1 (instanceRef full_cmp_ci_a))
          (portRef A1 (instanceRef full_cmp_ci_a))
          (portRef SP (instanceRef FF_101))
          (portRef SP (instanceRef FF_102))
          (portRef SP (instanceRef FF_103))
          (portRef SP (instanceRef FF_104))
          (portRef SP (instanceRef FF_105))
          (portRef SP (instanceRef FF_106))
          (portRef SP (instanceRef FF_107))
          (portRef SP (instanceRef FF_108))
          (portRef SP (instanceRef FF_109))
          (portRef SP (instanceRef FF_110))
          (portRef SP (instanceRef FF_111))
          (portRef SP (instanceRef FF_112))
          (portRef SP (instanceRef FF_113))
          (portRef SP (instanceRef FF_114))
          (portRef SP (instanceRef FF_115))
          (portRef AD2 (instanceRef LUT4_12))
         ))
         (net fifo_full (joined
          (portRef Q (instanceRef FF_0))
          (portRef A (instanceRef INV_1))
          (portRef fifo_full)
         ))

 

то есть, мы видим набор логических элементов, и описание цепей, какие выводы этих элементов соединяются с какими - то есть, схему, описанную текстом - нетлист.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...