HDL szintű hardverabsztrakciós réteg Chisel nyelven

Tanszéki konzulens: 
A munkatárs fényképe
tanársegéd
Szoba: IE335

A kiírás adatai

A téma státusza: 
Aktív (aktuális, lehet rá jelentkezni)
Kiírás éve: 
2018
A kiírás jellege: 
önálló labor, szakdolgozat/diplomaterv

A Berkeley egyetem 2012 óta fejleszti a Scala általános célú programozási nyelv fölött megvalósított hardverkészítő nyelvet, a Chisel-t. A filozófia és a fejlesztés menete a SystemC-hez hasonló: egy hardverleírásra készített osztálykönyvtár segítségével írjuk le a különböző digitális áramköröket, melyből futási időben Verilog forrás készül. A Veriloghoz képest nagy előnye, hogy a Scala nyelv összes nyelvi elemét és ökoszisztémáját használhatjuk a fejlesztéshez, így nagyon könnyű generikus (paraméterezhető) hardvert létrehozni. Emellett igen könnyű a kész terv verifikálása is, a szoftverfejlesztéshez használt tesztelő és verifikáló rutingyűjtemények is felhasználhatóak.

Milyen érdekes lenne úgy hardvert leírni, hogy pl. ahelyett, hogy lejátszanánk egy SPI adatátvitelt, és addig várunk, amíg el nem készül, csak annyit kéne írnunk a hardverleírásba:
 
SPI.read() {/* ezt akkor csinálja majd a hardver, ha az olvasás befejeződött */
  temperature:=SPI.data()
}
 
ahelyett, hogy:
 
SPI_reader reader(.clk(clk),.start(start), .ready(ready), .MISO(miso), .MOSI(mosi), .CS(cs),.SCK(sck),.dout(dout))
 
assign start=state==SPI_START;
always @(posedge clk)
  if(state==SPI_START) state<=SPI_WAIT;
  else if (state==SPI_WAIT)
    if(ready)state==SPI_IDLE;
  else /*SPI_IDLE*/
     ...
 
always @(posedge clk)
  if(state==SPI_WAIT && ready) temperature<=dout;
 
 
Tehát lényegében egy normál programnak kinéző leírásból automatikusan megépítjük az állapotgépet, ami ezt helyettünk elvégzi. Tegyük imperatívvá a hardverleírást!

Ez a téma kísérleti jellegű. Csak elszántaknak!

Kapcsolódó tantárgyak: 
Logikai tervezés
Kapcsolódó tantárgyak: 
Rendszerarchitektúrák
© 2010-2018 BME MIT | Hibajelentés | Használati útmutató