Questions
- In the SystemVerilog divider module, we perform a shift of the intermediate results. Why did we use the following:
{int_remainder, quotient} <= {int_remainder, quotient} << 1;
Rather than this?
{int_remainder, quotient} <<= 1;
- It better conveys design intent.
<<=
is a blocking assignment and we are using it in a clocked block, which violates the principles we laid out regarding safe design practices.- When we use a concatenation function,
{}
, we cannot use<<=
.
- Which of the following are synthesizable HDL? (Multiple correct answers)
logic [15:0] A, B; // SystemVerilog
signal A, B : std_logic_vector(15 downto 0);
- A / B
- A / 4
- A % B
- 5 % 4
- Experiment with the colors in the traffic light controller design. Can you come up with different colors by expanding the counter size and enabling the RGB outputs at different times? The color...