Tesi Robotica Algoritmi ed architetture per la risoluzione di... | Page 73
4.4. HARDWARE ARCHITECTURE
73
signal->connect(driver, instruction)
Notiamo che in questo modo cancelleremo le precedenti condizioni. Per specificare manualmente la condizione useremo:
signal->addCondition(signal, conditionSignal, driverSignal)
Per creare un registro o collegamento RTLSignal usiamo le seguenti funzioni:
rtl->addReg()
rtl->addWire()
Dove rtl è un oggetto RTLModule , rtl deve tenere traccia di tutti i segnali
utilizzati per stampare le dichiarazioni di variabili . Per creare un segnale è
necessario specificare un nome. Normalmente viene utilizzata la funzione verilogName (istruzione ) , che crea un nome univoco per l’istruzione utilizzando
l’oggetto GlobalNames nell’oggetto ripartizione discusso sopra . Per tutte le
istruzioni seguiamo la convenzione che ci sono 2 segnali creati, un filo , per
rappresentare l’istruzione durante lo stato è assegnato , e un registro , che il
filo si nutre solo stato assegnato. Il registro viene utilizzato se l’istruzione viene
utilizzata in un altro stato . Il nome del filo è verilogName (istruzione ) , il
nome del registro è verilogName ( istruzione ) + " _reg " .
4.4
Hardware Architecture
In questa sezione spiegheremo l’architettura hardware prodotta da LegUp quando sintetizziamo il C in Verilog.
4.4.1
Moduli
Per ogni funzione C vi è un corrispondente modulo Verilog. Per esempio il
seguente prototipo C:
int function(int a, int* b);
Genererebbe un modulo con la seguente interfaccia: