In my opinion at 23:30 , fork-join would be a better option to execute if conditions for both Head and Tail pointers simultaneously. Otherwise the compiler might execute the first if-else block first and then the second if-else block.
rd_ptr and wr_ptr shouldn’t be of 6 bits to count till 64, with this example max value of rd_ptr and wr_ptr can go up to 16. Please correct me if I am mistaken here.
In the Verilog code the pointers are declared as: reg [3:0] rd_ptr, wr_ptr; shouldn't they be declared as: reg [5:0] rd_ptr, wr_ptr; So when they reach 63, then they are automatically set to zero when incremented again?
buf_full signal should be asserted when the fifo_counter is 63, not 64 because it counts from 0. Therefore the statement should be corrected as "buf_full = (fifo_counter == 63);"
In my opinion at 23:30 , fork-join would be a better option to execute if conditions for both Head and Tail pointers simultaneously. Otherwise the compiler might execute the first if-else block first and then the second if-else block.
simple and clear explanation , extremely helpful
rd_ptr and wr_ptr shouldn’t be of 6 bits to count till 64, with this example max value of rd_ptr and wr_ptr can go up to 16. Please correct me if I am mistaken here.
whom you are explaining 😂
Can you share a tutorial on asynchronous FIFO counter?
In the Verilog code the pointers are declared as:
reg [3:0] rd_ptr, wr_ptr;
shouldn't they be declared as:
reg [5:0] rd_ptr, wr_ptr;
So when they reach 63, then they are automatically set to zero when incremented again?
its actually reg [5:0] cos 64 mem locations
@@abhishekshankar1136sir can you plz give the test bench for above fifo code
buf_full signal should be asserted when the fifo_counter is 63, not 64 because it counts from 0. Therefore the statement should be corrected as "buf_full = (fifo_counter == 63);"
The counter is initialized as 0, so it is counting from 1, so it is correct.
No bro it has to be corrected to 63 , there initialized as 0 but after coming to 0 only it starts the count so it needs to get corrected
From 0 to 1 it counts 1 1 to 2 it counts 2 and 63 to 64 it counts 64 hence at 64th count it will be full
Very simple but informative video.
in first always block,in senstivity list only input will define .how u define output in sensitivuty list??
Clear explaination. Pretty helpful. Thank you very much. :)
can you pls share source code with testbench
sir can u share the code
sir can u share the code for different read and write clocks
Well explained.
Is this
Hdl code
Or VLSL
excellent video
Please add video for and code for asynchronous FIFO
his lecture are in udemy
Nice explaination b
Nice explanation
What is the benefit of using circular buffer ??
You mean instead of using a shift register, for instance?