We are currently in the process of converting the website to the new design. Some pages, like this one, are still broken. We appreciate your patience.
Bitwise»Episode Guide
More FIFOs
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
0:07Recap and set the stage for the day continuing with sequential logic
🗩
0:07Recap and set the stage for the day continuing with sequential logic
🗩
0:07Recap and set the stage for the day continuing with sequential logic
🗩
0:42Review the off-stream bug-fix in the memory(), establishing read-after-write semantics
📖
0:42Review the off-stream bug-fix in the memory(), establishing read-after-write semantics
📖
0:42Review the off-stream bug-fix in the memory(), establishing read-after-write semantics
📖
3:05Review the off-stream bug-fix in fifo(), establishing registered output
📖
3:05Review the off-stream bug-fix in fifo(), establishing registered output
📖
3:05Review the off-stream bug-fix in fifo(), establishing registered output
📖
7:25Simulate our FIFO with the fifo_test_consumer() starting with idle cycles
🏃
7:25Simulate our FIFO with the fifo_test_consumer() starting with idle cycles
🏃
7:25Simulate our FIFO with the fifo_test_consumer() starting with idle cycles
🏃
8:20Set up to cover a shift register-based FIFO implementation useful in Xilinx FPGAs
🗩
8:20Set up to cover a shift register-based FIFO implementation useful in Xilinx FPGAs
🗩
8:20Set up to cover a shift register-based FIFO implementation useful in Xilinx FPGAs
🗩
10:10Shift register
🗩
10:10Shift register
🗩
10:10Shift register
🗩
11:00Introduce shift_memory()
11:00Introduce shift_memory()
11:00Introduce shift_memory()
14:09Shifting sequential cells
🗩
14:09Shifting sequential cells
🗩
14:09Shifting sequential cells
🗩
15:11Continue to implement shift_memory()
15:11Continue to implement shift_memory()
15:11Continue to implement shift_memory()
17:54Write a test of our shift memory
17:54Write a test of our shift memory
17:54Write a test of our shift memory
20:48Simulate our shift memory successfully
🏃
20:48Simulate our shift memory successfully
🏃
20:48Simulate our shift memory successfully
🏃
21:46Establish read-after-write semantics in shift_memory()
21:46Establish read-after-write semantics in shift_memory()
21:46Establish read-after-write semantics in shift_memory()
23:09Simulate our shift memory successfully
🏃
23:09Simulate our shift memory successfully
🏃
23:09Simulate our shift memory successfully
🏃
23:29Write a second test of our shift memory that reads in the first element before shifting in a new value
23:29Write a second test of our shift memory that reads in the first element before shifting in a new value
23:29Write a second test of our shift memory that reads in the first element before shifting in a new value
24:55Simulate our shift memory successfully
🏃
24:55Simulate our shift memory successfully
🏃
24:55Simulate our shift memory successfully
🏃
25:05Shift register-based FIFO
🗩
25:05Shift register-based FIFO
🗩
25:05Shift register-based FIFO
🗩
29:42Introduce shift_fifo(), renaming fifo() to ring_fifo()
29:42Introduce shift_fifo(), renaming fifo() to ring_fifo()
29:42Introduce shift_fifo(), renaming fifo() to ring_fifo()
38:47Test our shift FIFO
38:47Test our shift FIFO
38:47Test our shift FIFO
39:19Simulate our shift FIFO test and hit a TypeError, Inconsistent types
🏃
39:19Simulate our shift FIFO test and hit a TypeError, Inconsistent types
🏃
39:19Simulate our shift FIFO test and hit a TypeError, Inconsistent types
🏃
39:32Make shift_fifo() explicitly compute the length
39:32Make shift_fifo() explicitly compute the length
39:32Make shift_fifo() explicitly compute the length
40:54Simulate our shift FIFO and step through to see what's taking it so long
🏃
40:54Simulate our shift FIFO and step through to see what's taking it so long
🏃
40:54Simulate our shift FIFO and step through to see what's taking it so long
🏃
45:00Fix the length computation in shift_fifo()
45:00Fix the length computation in shift_fifo()
45:00Fix the length computation in shift_fifo()
45:57Simulate our shift FIFO successfully
🏃
45:57Simulate our shift FIFO successfully
🏃
45:57Simulate our shift FIFO successfully
🏃
46:20Start fifo_test_consumer() with 100 idle cycles
46:20Start fifo_test_consumer() with 100 idle cycles
46:20Start fifo_test_consumer() with 100 idle cycles
46:24Simulate our shift FIFO with the fifo_test_consumer() starting with idle cycles
🏃
46:24Simulate our shift FIFO with the fifo_test_consumer() starting with idle cycles
🏃
46:24Simulate our shift FIFO with the fifo_test_consumer() starting with idle cycles
🏃
46:46Prevent shift_fifo() from filling up completely
46:46Prevent shift_fifo() from filling up completely
46:46Prevent shift_fifo() from filling up completely
47:07Simulate our shift FIFO successfully
🏃
47:07Simulate our shift FIFO successfully
🏃
47:07Simulate our shift FIFO successfully
🏃
47:50Establish registered outputs in shift_fifo()
47:50Establish registered outputs in shift_fifo()
47:50Establish registered outputs in shift_fifo()
48:13Simulate our shift FIFO with registered outputs successfully
🏃
48:13Simulate our shift FIFO with registered outputs successfully
🏃
48:13Simulate our shift FIFO with registered outputs successfully
🏃
49:21Block RAM in Xilinx FPGAs1
📖
49:21Block RAM in Xilinx FPGAs1
📖
49:21Block RAM in Xilinx FPGAs1
📖
51:00The basic logic building block in Xilinx: a 6-input 1-output bit lookup table2
📖
51:00The basic logic building block in Xilinx: a 6-input 1-output bit lookup table2
📖
51:00The basic logic building block in Xilinx: a 6-input 1-output bit lookup table2
📖
54:37The downside of building large FIFOs with shift registers
🗩
54:37The downside of building large FIFOs with shift registers
🗩
54:37The downside of building large FIFOs with shift registers
🗩
56:41Valid / ready signaling3
📖
56:41Valid / ready signaling3
📖
56:41Valid / ready signaling3
📖
1:02:57Introduce chain_fifo()
1:02:57Introduce chain_fifo()
1:02:57Introduce chain_fifo()
1:10:23Write a test of our chain FIFO
1:10:23Write a test of our chain FIFO
1:10:23Write a test of our chain FIFO
1:13:17Simulate our chain FIFO to find that it is successfully enqueueing, but slow
🏃
1:13:17Simulate our chain FIFO to find that it is successfully enqueueing, but slow
🏃
1:13:17Simulate our chain FIFO to find that it is successfully enqueueing, but slow
🏃
1:14:55Simulate it from the command line, hopefully for speed
🏃
1:14:55Simulate it from the command line, hopefully for speed
🏃
1:14:55Simulate it from the command line, hopefully for speed
🏃
1:17:19Simulate it with smaller FIFOs
🏃
1:17:19Simulate it with smaller FIFOs
🏃
1:17:19Simulate it with smaller FIFOs
🏃
1:18:28Investigate why the chain_fifo() isn't getting the message that the producer has finished
📖
1:18:28Investigate why the chain_fifo() isn't getting the message that the producer has finished
📖
1:18:28Investigate why the chain_fifo() isn't getting the message that the producer has finished
📖
1:19:30Fix chain_fifo() to correctly dequeue
1:19:30Fix chain_fifo() to correctly dequeue
1:19:30Fix chain_fifo() to correctly dequeue
1:22:31Simulate the size 2 chain FIFO and watch what it does
🏃
1:22:31Simulate the size 2 chain FIFO and watch what it does
🏃
1:22:31Simulate the size 2 chain FIFO and watch what it does
🏃
1:24:31Simulate a size 3 chain FIFO, also successfully
🏃
1:24:31Simulate a size 3 chain FIFO, also successfully
🏃
1:24:31Simulate a size 3 chain FIFO, also successfully
🏃
1:24:46Simulate a size 4 chain FIFO, unsuccessfully, and step through chain_fifo()
🏃
1:24:46Simulate a size 4 chain FIFO, unsuccessfully, and step through chain_fifo()
🏃
1:24:46Simulate a size 4 chain FIFO, unsuccessfully, and step through chain_fifo()
🏃
1:27:33Check the graph of a size 4 chain FIFO
🏃
1:27:33Check the graph of a size 4 chain FIFO
🏃
1:27:33Check the graph of a size 4 chain FIFO
🏃
1:30:11Investigate the possibility that we have a latent delay-related bug
🏃
1:30:11Investigate the possibility that we have a latent delay-related bug
🏃
1:30:11Investigate the possibility that we have a latent delay-related bug
🏃
1:34:32Scrutinise the graph of a size 4 chain FIFO
🏃
1:34:32Scrutinise the graph of a size 4 chain FIFO
🏃
1:34:32Scrutinise the graph of a size 4 chain FIFO
🏃
1:35:33Scrutinise the code of chain_fifo()
📖
1:35:33Scrutinise the code of chain_fifo()
📖
1:35:33Scrutinise the code of chain_fifo()
📖
1:37:08Call it a day, with another recommendation of UC Berkeley's 'Interfaces: "FIFO" (a.k.a. Ready/Valid)'4 and a glimpse into the future
🗩
1:37:08Call it a day, with another recommendation of UC Berkeley's 'Interfaces: "FIFO" (a.k.a. Ready/Valid)'4 and a glimpse into the future
🗩
1:37:08Call it a day, with another recommendation of UC Berkeley's 'Interfaces: "FIFO" (a.k.a. Ready/Valid)'4 and a glimpse into the future
🗩
You have arrived at the (current) end of Bitwise