pipelining в verilog

A

amitgvlsijune06

Guest
Як залучити pipelining в verilog кодування певного architecture.please дати мені кілька прикладів.

 
Самое простейшее трубопроводу за допомогою клямки.Розглянемо ckt з комбінаційному блоків,
пов'язаних один з одним .. тобто, о / р від 1-го блоку виходить як I / P до наступного і так on.till вона досягає останнього O / P етапі ..Для цього трубопроводу, ми просто клямки даних між кожної стадії й використовувати загальний години ці засувки.Це найпростіший трубопроводу.

У процесорі
в контексті pipelining означає дублювання базових величин, тобто,
якщо ідентифікатор, EX одиниці.Якщо you'r виконання 5 етапу трубопроводу, то у дублювати ці блоки в 5 разів.

Що я сказав тут, це тільки основи ..Є інші міркування, які слід прийняти допомогу, коли pipelining.

 
PLS розробити її трохи далі ... с somecoding приклади.Я зрозумів, що сказав
Ю. R

 
Ви можете мати незалежний блок коду, скажімо, 5 етапів Ура процесор трубопроводу ...... Коли U дати загальну годин для всіх цих підрозділів, і при виході з одного блоку підключається до наступних ... одиниця, яка автоматично створює трубопроводу .., так як кожна одиниця обробки даних в порівнянні з попереднім підрозділ в наступному такті.

 
його, як відро, однією заповнити ряд наступних каскадним

 
В DC, у кліща знайшли цікавий матеріал про pipelining ...
Чет R трьох команд,
пов'язаних з retiming!!
optimize_timing
pipeline_register
register_balance
Я HAV в Luk в документ для правильної команди ..
У HAV в окремий документ для retiming продать!!пройти через це
Шів

 
Ви можете знайти код в opencore сайту

 
Давайте говорити у вас є 5 основних етапи трубопровідної IF ID EX MEM СБ:

Тепер, дозволяє сказати, у вас є два н.у.к..в інструкції, які повинні бути додані ДОДАТИ 05,06 (це тільки для прикладу, один з них повинен бути реєстр).Тепер давайте подивимося на годинник:
код операції за ADD = AB (кажуть),
тому навчання буде виглядати AB 05 06, дозволяє сказати, що ми можемо отримати всі три одночасно з
пам'яттю
Годинники 1: IF
AB 05 06 є завантажених з пам'яті.дані замкнену і направлені на другий етап трубопроводу
приклад коду:
завжди @ (posedge sys_clk)
код операції <= AB (N регістрів використовується)
data1 <= 05; (м регістрів використовується)
data2 <= 06; (м регістрів використовується)Години 2: Код
Тут ми знаємо, що instrn додати так ми відправимо його на ALU, який є третім етапом
приклад коду:

завжди @ (posedge sys_clk)
ALU_op <= op_code (декодування відбувається тут = деякі комбінаційному логічних N regs)
ALU_data1 <= data1 (м більше regs)
ALU_data2 <= data2 (м більше regs)

Годинники 3: EX
Тут дані додаються в асю.Тепер розумію, що дані (05 06) була представлена на самому першому етапі (1 година)
Незважаючи на це ми повинні були пройти через перші 2 етапи, щоб код операції, а також дані availbale на Асю протягом 3 годин.
Іншими словами, це дані через трубопровід 2 ступеню (= додаткових flops / регістрів)

В даний час, дозволяє говорити вам необхідно вихід з ALU на етапі 5 (може бути, однієї з попередніх потрібна ця інструкція).Таким чином, дані можуть бути відправлені на етапі 5 напряму.
Немає необхідності проходить через етап 4, 5.Це відомий як пересилання в трубопроводі.Для отримання додаткової інформації
див Computer Architecture: апаратна програмного підходу hennessey і Паттерсон.
Це було дуже добре пояснив в цій книзі.

В принципі кожен трубопровід етапі це просто вихід з проникних етапі розділені на флопе.

HTH,
B

 

Welcome to EDABoard.com

Sponsor

Back
Top