cpet-343-01/notes.md
2023-09-20 10:49:01 -04:00

84 lines
3.3 KiB
Markdown

# Design vs Implementation
Most of the previous courses are implementation-based. This course, and ESD I/II are primarily design based.
Do not simply code a solution. Design your solution first.
Research Open Source multichannel oscilloscope using an arduino
## Syllabus Overview
We will spend a significant poriton of the courses on testbenches, due to the lack of coverage in previous courses.
"I don't give a lot of homework.": Syllabus lists one assignment approximately every 3 weeks. Late homework will not be accepted.
Quizzes will be given, both announced and unannounced, thorughout the semester. Quizzes are closed book closed note.
***YOU MUST PASS THE LAB TO PASS THE CLASS.***
Attendance is optional.
There will be 3 exams, including the final. 1x 8.5"x11" sheet of handwritten notes is allowed.
## HDL Basics
HDL = Hardware Description Language
Unlike most code, HDL code is *concurrent, rather than sequential*.
HDL, due to being concurrent, is *low-latency*.
Textbook ("Effective Coding in VHDL" by Ricardo Jasinski) is optional, but has important design concepts.
There are two primary languages in HDL:
- VHDL
- Verilog
SystemVerilog is also extant, and appears to use both VHDL and Verilog, with portions of C++ as well.
Professor appears to enjoy Elon Musk's work. Professor is also somewhat scatterbrained. Determining eye contact is somewhat unclear from the back of the lecture room. However, he does appear to know many people in the industry.
*determinism*:
*clock*:
*memory*:
*computer*: the combination of input, output, processing, and memory. Note that this does not require the computer to be DIGITAL.
In lab, we will be working from the bare basics. We will implement an adder, then move beyond that.
No lab for the first two weeks.
---
This professor enjoys analysing precisely what words mean. He also is pushing "climb-the-ladder" mindset.
Microprocessors contain memory, a program counter, and a series of instructions.
FPGA's, by contrast, are staticly defined gates that will always perform the exact same programmed task.I see. That makes sense.
Microprocessors run 10x faster than an FPGA. However, FPGA's are more parallelised.
---
Combinational logic is asynchronous. That is not to say instantaneously, however it is not clock dependent. This is code that can be performed concurrently.
Synchronous, by contrast, requires a clock signal. This is slower, but is perhaps safer, due to ignoring most instances of transition and debounce. This is code that can only be performed sequentially, in a `process` codeblock.
There is propogation delays between each logical transition, but its rather minute so in most cases can be ignored. However, this shows up more prevalently in simulations, and is defined as Delta Time.
Processes work off of snapshots in time. Cascading assignments within processes may not work as expected.
---
As with any other language, there are multiple ways to implement the same idea.
---
Elecrtical systems internally contain similar behaviour to physical debounce.
Asynchronous operations should be pre-registered and post-registered.
`generate` statements are similar to generics, and are often used in conjunction with generics. There are also `for` loop generate statements. The main usecase for generate statements is for debugging.