Eu venho de um background de programação e não mexi muito com hardware ou firmware (no máximo, um pouco de eletrônica e Arduino).
Qual é a motivação para usar as linguagens de descrição de hardware (HDL), como Verilog e VHDL, sobre linguagens de programação como C ou algum Assembly?
Essa questão é uma questão de escolha?
Eu li que o hardware, cujo firmware está escrito em HDL, tem uma clara vantagem na execução de instruções em paralelo. No entanto, fiquei surpreso ao ver discussões expressando dúvidas sobre escrever firmware em C ou Assembly (como o Assembly é apropriado se você não possui necessariamente uma CPU?), Mas concluí que também é uma opção.
Portanto, tenho algumas perguntas (não hesite em explicar nada):
Um firmware pode realmente ser escrito em HDL ou em uma linguagem de programação de software, ou é apenas outra maneira de realizar a mesma missão? Eu adoraria exemplos do mundo real. Quais restrições resultantes de cada opção?
Sei que um uso comum de firmware por software está em aceleradores de hardware (como GPUs, adaptadores de rede, aceleradores SSL, etc.). Pelo que entendi, essa aceleração nem sempre é necessária, mas apenas recomendada (por exemplo, no caso de SSL e aceleração de algoritmos complexos). Pode-se escolher entre firmware e software em todos os casos? Caso contrário, ficaria feliz em casos em que o firmware é clara e inequivocamente apropriado.
Eu li que o firmware geralmente queimava em ROM ou flash. Como é representado lá? Em bits, como software? Em caso afirmativo, qual é a diferença profunda? É a disponibilidade de circuitos adaptados no caso de firmware?
Acho que cometi um erro aqui e ali em algumas suposições, por favor, me perdoe. Obrigado!