HDL szintű hardverabsztrakciós réteg Chisel nyelven
Tanszéki konzulens:
![]() lecturer
Szoba: IE335 |
A kiírás adatai
A téma státusza:
Korábbi (jelenleg nem aktív, de látszik)
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ó weblapok:
Mi az a Chisel
Kapcsolódó weblapok:
Learn Chisel the right way
Submitted by Wacha Gábor on 2018. January 15. 17:17 | Last updated: 2019. January 17. 10:54