Welkom op de Nederland Computer Kennisnetwerk!  
 
Zoeken computer kennis
Home Hardware Netwerken Programmering Software Computerstoring Besturingssysteem
Computer Kennis >> Programmering >> C /C + + Programming >> Content
Hoe hardware systemen te modelleren in SystemC
Hardware systemen zijn meestal gemodelleerd met hardware beschrijving talen zoals Verilog . Dergelijke talen zijn bedoeld om ontwerpers code schrijven die zeer dicht bij de gegenereerde hardware, zodat de tool chain voor chip ontwerp van de code kan gebruiken om de uiteindelijke hardware genereren . Het nadeel van deze aanpak is de beperkte flexibiliteit programmering in deze talen . SystemC is een set van klassebibliotheken gebaseerd op C + + programmeertaal en de bedoeling is om model hardwaresystemen en tegelijkertijd , van alle kenmerken van de taal C + + . Wat je nodig hebt
C + + compiler , zoals g+ +
Besturingssysteem
Toon Meer Aanwijzingen
gebruik SystemC
1

Download de SystemC pakket . SystemC kan gratis worden gedownload van het internet . Voor het downloaden , wordt u gevraagd te registreren bij de SystemC gemeenschap . Zodra de registratie is voltooid , kan het pakket worden gedownload na het inloggen op de website met de opgegeven gebruikersnaam en wachtwoord .

Pak 2 van de gecomprimeerde pakket . De gecomprimeerde pakket zal een bestand extensie genaamd " tgz " hebben . Neem aan dat de naam van het pakket is " . Tgz " . Het pakket kan worden uitgepakt met de volgende opdrachten :

gunzip tgz

tar
- xvf teer
3 < . . p > Ga naar de uitgepakte map met behulp van de "cd " commando . In deze map , kan een bestand genaamd " INSTALL " te vinden . Dit bestand biedt stap - voor-stap instructies voor het installeren van het pakket . Volg de stappen en installeer SystemC . Zodra SystemC is geïnstalleerd , kan hardware systemen worden gemodelleerd in de taal . Het pakket heeft een monster ontwerpen in de " voorbeelden " directory .
4

Gebruik de volgende code als voorbeeld te modelleren hardware systemen . Het voorbeeld is een ontwerp van een systeem met twee processen . De eerste werkwijze vult in een diepe buffer wanneer deze leeg is. De tweede werkwijze ontzette met de waarde van de buffer . De twee processen verscshillende klokfrequenties . De code wordt hieronder uitgelegd : .

Neem de nodige header files

# include " systemc.h "

# include

# onder

Class " mybuf "
wordt heeft twee ingang klokken , CLK1 en CLK2 . Twee methodes , namelijk , plaatsen en te verwijderen zijn gedefinieerd , waarbij "invoegen " wordt aangeroepen op de positieve kant van CLK1 , en " remove " wordt aangeroepen op de positieve flank van " CLK2 "

klasse mybuf
: . Openbare sc_module {

publiek :

sc_in_clk
CLK1 ;

sc_in_clk
CLK2 ;

std
:: deque waarden ;

SC_HAS_PROCESS
( mybuf ) ;

mybuf
( sc_module_name naam ) : sc_module ( naam ) {

initialize ( ) op ;

SC_METHOD
( insert ) ;

gevoelige < < clk1.pos ( ) ;

SC_METHOD
( verwijder) ;

gevoelige << clk2.pos ( ) op ;

}

leegte
voegen ( ) ;

leegte
verwijderen ( ) ;

leegte initialize ( ) op ;

} ;

de volgende coderegels uitvoering van de inbrengen en verwijderen methoden , samen met een initialisatie methode

leegte mybuf
:: initialize ( ) {

values.clear ( ) op ;


}

leegte mybuf
. : : verwijder ( ) {

if ( values.size ( ) > 0 ) {

std
:: cout << sc_time_stamp ( ) << " " << values.front ( ) << endl ;

values.pop_front
( ) ;

}

leegte mybuf

}
:: insert ( ) {

if ( values.size ( ) == 0 ) {

int r = rand ( ) % 100 ; values.push_back

( r ) ;

}

}


de volgende code segment implementeert een test - bank voor het voorbeeld . De klokken CLK1 en CLK2 worden verdreven uit deze test - bench

klasse
mybuf_tb : openbare sc_module {

publiek : .

Sc_out CLK1 ;

sc_out CLK2 ;

SC_HAS_PROCESS
( mybuf_tb ) ;

mybuf_tb
( sc_module_name naam ) : sc_module ( naam ) {

SC_THREAD
( clock1 ) ; < br

SC_THREAD > ( clock2 ) ;

}

leegte
clock1 ( ) ;

leegte
clock2 ( ) ;

} ;

leegte mybuf_tb :: clock1 ( ) {

while (true ) {

CLK1 = 0 ;

wachten
( 10 , SC_NS ) ;

CLK1 = 1 ;

wachten
( 10 , SC_NS ) ;

}

}

leegte mybuf_tb
:: clock2 ( ) {

while (true ) {

CLK2 = 0 ;

wachten
( 20 , SC_NS ) ;

CLK2 = 1 ;

wachten
( 20 , SC_NS ) ;

}

}
de volgende code segment instantieert de ontwerp -module en de testbank . Dan bindt hij de klokken , zodat de test - bank biedt de klok waarden aan het ontwerp module .

Int sc_main ( int argc , char * argv [ ] ) {

sc_signal
CLK1 ;

sc_signal CLK2
;

mybuf newbuf
( " mybuffer " ) ;

newbuf.clk1 ( CLK1 ) ;

newbuf
. CLK2 ( CLK2 ) ;

mybuf_tb
1 ;

}

Previous: Next:
  C /C + + Programming
·Hoe de inhoud van een Array Li…
·Hoe kan ik een string array in…
·Hoe te converteren C + + aan A…
·Hoe de Visual Fix C + + Runtim…
·Hoe kan ik zoeken naar een bes…
·Hoe de subweergave verbergen o…
·Hoe te Fonts in MFC Toon 
·Hoe maak je een . PK3 bestand …
·Herdefiniëren Methods in C + …
  Related Articles
Hoe maak je een Combo Box Maak in Visual…
Hoe maak je een Check Box Maak in Visual…
Hoe maak je een tekstvak maken in Visual…
Hoe maak je een optie Box in Visual Basi…
Hoe maak je een schijf keuzelijst in Vis…
Hoe kan ik een keuzelijst maken in Visua…
Hoe kan ik een Picture Box Maak in Visua…
Hoe een bestand keuzelijst Maak in Visua…
Hoe kan ik een afbeelding Box Maak in Vi…
  Programmering Articles
·Hoe kan ik Geef een taglib in Java ? 
·Thread Beperkingen in Java 
·Hoe te Grafiek Met Software voor Python 
·Hoe om te controleren voor de gehele get…
·Hoe maak je automatisch wijzigen zaak ee…
·Hoe te Beperk het aantal tekens in een J…
·Het belang van buffers 
·Hoe om te controleren voor de Ctrl - D i…
·Hoe te identificeren & Extract Relations…
Copyright © Computer Kennis http://www.nldit.com