
Ask HN: Thinking like a hardware designer - DigitalJack
I understand it&#x27;s difficult to realize what you don&#x27;t know, so this question may be unanswerable.
I&#x27;m a hardware engineer, I develop ASICs and FPGAs for various tasks. I also develop simple software as a hobby. I don&#x27;t have a background in the kinds of algorithms that a CS student would have, but I can hack my way through stuff.
That said, I&#x27;m interested in working a book to take a software engineer into the realm of hardware hacking of FPGAs. Rather than just give a CPU example in VHDL I&#x27;d like to work through the main principals of what sort of thinking is needed for hardware development.
However, since I don&#x27;t have a CS degree, there is a lot of intro material that I&#x27;m just not sure is common knowledge to CS students or not.
So this is an open ended question. What sorts of things would you like to see in such an introductory book (geared toward software hackers) and what would you like it to assume you already understand?
For example are CS folks comfortable with the idea of two&#x27;s complement for subtraction? Are you interested in semiconductor physics or the process of constructing integrated circuits? (that&#x27;s interesting background, but not strictly required for digital design). Are you comfortable with boolean logic, stuff like demorgan&#x27;s laws? I&#x27;m assuming karnaugh maps aren&#x27;t frequently brought up in a CS environment.
I&#x27;m trying to figure out what would be a waste if I am targeting CS hacker types vs someone with no computer background.
======
blcArmadillo
I'd say most people in computer science have a comprehensive understanding of
data representations so they have knowledge of things like two's complement. I
think it's most important to start of explaining that verilog and vhdl are
hardware descriptor languages not a programming language and get them to the
point where they can visualize the actual logic being described. It's
important to understand that registers can't just be thought of as a variable
in the traditional sense despite looking like one at the syntax level; they're
really a flip-flop that needs to be clocked. And that there is a critical
delay path in the combinatorial logic that will dictate how fast your clock
can be.

~~~
DigitalJack
Thanks for the feedback. I have quite a bit written already and was just
getting to the concept of timing and clocking signals.

------
alain94040
Hey, I had the exact same motivation to introduce software folks to HW
thinking and started this page:
[https://en.wikibooks.org/wiki/Programmable_Logic/Verilog_for...](https://en.wikibooks.org/wiki/Programmable_Logic/Verilog_for_Software_Programmers)

Maybe you want to add more pages based on what you think is important.

~~~
DigitalJack
I think I did run across this in my initial research, but I was also
interested in learning LaTeX and thought this project would be a good excuse
to do that.

