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: