Vengo da un background di programmazione e non ho troppi problemi con hardware o firmware (al massimo un po 'di elettronica e Arduino).
Qual è la motivazione nell'uso dei linguaggi di descrizione hardware (HDL) come Verilog e VHDL rispetto ai linguaggi di programmazione come C o alcuni Assembly?
Questo problema è assolutamente una questione di scelta?
Ho letto che l'hardware, il cui firmware è scritto in un HDL, ha un chiaro vantaggio nell'eseguire le istruzioni in parallelo. Tuttavia, sono rimasto sorpreso nel vedere discussioni che esprimono dubbi sulla scrittura del firmware in C o Assembly (come è appropriato Assembly se non si dispone necessariamente di una CPU?) Ma ho concluso che è anche un'opzione.
Pertanto, ho alcune domande (non esitate a spiegare qualcosa):
Un firmware può davvero essere scritto in HDL o in un linguaggio di programmazione software, oppure è solo un altro modo per eseguire la stessa missione? Mi piacerebbe esempi del mondo reale. Quali vincoli derivano da ciascuna opzione?
So che un uso comune del firmware rispetto al software è negli acceleratori hardware (come GPU, adattatori di rete, acceleratori SSL, ecc.). A quanto ho capito, questa accelerazione non è sempre necessaria, ma solo raccomandata (ad esempio, nel caso di SSL e accelerazione di algoritmi complessi). Si può scegliere tra firmware e software in tutti i casi? In caso contrario, sarei felice dei casi in cui il firmware è chiaramente e inequivocabilmente appropriato.
Ho letto che il firmware è stato masterizzato principalmente su ROM o flash. Come viene rappresentato lì? A pezzi, come il software? Se è così, qual è la differenza profonda? È la disponibilità di circuiti adattati nel caso del firmware?
Immagino di aver fatto un errore qua e là in alcune ipotesi, ti prego di perdonarmi. Grazie!