What is a Block RAM in an FPGA?

  Рет қаралды 92,777

nandland

nandland

Күн бұрын

NEW! Buy my book, the best FPGA book for beginners: nandland.com/book-getting-sta...
How Block RAM (BRAM) works inside of an FPGA for beginners. Learn about when and where you would use BRAM. Learn about different configurations: Single Port, Dual Port, FIFO. How are Block RAMs useful in crossing clock domains.
Shows how to instantiate, infer, and create BRAMs via the Interactive GUI, used in both VHDL and Verilog.
Support this channel! Buy a Go Board, the best development board for beginners to FPGA: www.nandland.com/goboard/intr...
Like my content? Help me make more at Patreon!
/ nandland

Пікірлер: 53
@jacobseal
@jacobseal 3 жыл бұрын
Nice explanation. Just ordered the go board yesterday. Can't wait to get started.
@Gruftgrabbler
@Gruftgrabbler 3 жыл бұрын
I am learning BlueSpec and have to do a exercise where I need Block Ram. I had no idea what this is so thank you for this video :)
@ThinhNguyen-pf3zd
@ThinhNguyen-pf3zd 5 жыл бұрын
Really love this, thanks a lot
@kaypope1581
@kaypope1581 7 жыл бұрын
Awesome video! Thanks for explaining on BRAM in detail.
@ahmadmaihreze9492
@ahmadmaihreze9492 6 жыл бұрын
thank you it was usful , i wait for more details of other components in FPGA , thanks
@tonmoyarif9747
@tonmoyarif9747 4 жыл бұрын
Wonderful explanation 👏👏👏
@chatgpt94274
@chatgpt94274 7 жыл бұрын
great explanation again
@xmotoFF
@xmotoFF 7 жыл бұрын
keep them comin'!
@zichan894
@zichan894 4 жыл бұрын
Awesome vedio, thanks a lot!
@zack11235
@zack11235 6 жыл бұрын
Very concise! Thank you :)
@danielmoraes9637
@danielmoraes9637 5 жыл бұрын
amazing, thanks
@saheradam8029
@saheradam8029 4 жыл бұрын
Thanks much appreciated
@maadnaz2999
@maadnaz2999 2 жыл бұрын
Nice video
@Dhaif_El-Jaber
@Dhaif_El-Jaber Жыл бұрын
thank you for your help i understand verlog from your channel just
@lidar532
@lidar532 4 жыл бұрын
Hi Russel Could you please create some BRAM examples on EDAplayground that could then be migrated to the GOboard.
@rvhp
@rvhp 3 жыл бұрын
Thank you.
@user-hd2iv8jr6n
@user-hd2iv8jr6n 2 жыл бұрын
Thank you
@thermodynamicsforhvacibr-hl4lf
@thermodynamicsforhvacibr-hl4lf Жыл бұрын
Amazing
@JL-xu5vq
@JL-xu5vq 7 жыл бұрын
Hello I like your videos, could you put a link of the power point of the video to let download it please?
@wisnueepis3593
@wisnueepis3593 4 жыл бұрын
Could you give an instance to initialize the bram module on new blank verilog project. So, i could store some data in it. Thanks bro
@alexshepel5599
@alexshepel5599 3 жыл бұрын
Nice!
@prithvivelicheti287
@prithvivelicheti287 4 жыл бұрын
Loved it ! So clearly explained.Thank you. Would be helpful if you explain stuff with Intel FPGAs
@muhammedfayas5907
@muhammedfayas5907 Ай бұрын
Hello Sir, can you please make a video how to store the text file in block RAM.
@Andrew-eg2pc
@Andrew-eg2pc 3 жыл бұрын
Is there any FPGA verilog example of reading and writing BRAM?
@k.wonderwei3221
@k.wonderwei3221 4 жыл бұрын
thank you for your tutorial. I'm desperately looking for an example or tutorial for block RAM instantiation. do you have one please? Thanks
@HaseebKhan-hl4vm
@HaseebKhan-hl4vm 3 жыл бұрын
Try working on some examples related to VGA. Those examples usually use block RAM's and you will also get a chance to practice. Another way to practice is to create a GCD calculator using (datapath+controller) and try feeding the design values from a ROM.
@kedharguhan
@kedharguhan 3 жыл бұрын
I am not able to wrap my head around what exactly makes, a BRAM. Since BRAM has variable width and depth, does it mean each and every bit of it is independent and addressable?
@MITESHSINGHRAJPUROHIT
@MITESHSINGHRAJPUROHIT Жыл бұрын
can provide info about how to store pixel of a pic into bRAM
@varunrain8763
@varunrain8763 5 жыл бұрын
Hi Russel, Could you tell me how to write a testbench for a BRAM of depth 50. I mean if the address we use for BRAM, Ex: bram(addr1) is more than 50 in terms of depth, how do you provide a 50-length long value for it in the testbench? Thanks, Varun
@Nandland
@Nandland 5 жыл бұрын
Hm not sure I understand the question. In general I set my depth to a base 2 number. 64, 128, 256 etc. That way the address is always valid.
@yukeyang9643
@yukeyang9643 6 жыл бұрын
Thanks for your video,but I don't really understand the first two ways of generating a BRAM at around 12:39.It would be much better if you can describe it using some more specific instances,such as code snippets or showcasing it yourself. Still,this is an awesome video,best regards from China.
@olivialinden8699
@olivialinden8699 3 жыл бұрын
GREAT
@hyemimin3582
@hyemimin3582 6 жыл бұрын
Thanks for the video, I have a question. You mentioned at the end of video, BRAM is not recommended for large design.. then what is another option for large design?
@Nandland
@Nandland 6 жыл бұрын
I think I said that I don't recommend using the interactive GUI for creating BRAM for large designs. That's when I'm talking about what method to use to create the BRAM.
@hyemimin3582
@hyemimin3582 6 жыл бұрын
Ah, I misunderstood. Sorry. Then, What do you recommend to create BRAM? Sorry for silly question. I am a beginner of FPGA
@Nandland
@Nandland 6 жыл бұрын
For beginners/small designs I DO recommend the GUI tool. Large designs though it becomes unwieldy.
@nandithanvarma1514
@nandithanvarma1514 4 жыл бұрын
That was very informative..Sir I have a doubt.. Suppose Ihave a textfile and wanted to take its contents and store in this Block Ram.. is that possible?
@Nandland
@Nandland 4 жыл бұрын
Yes definitely, assuming the fpga itself supports this. You should be able to Google some examples of this.
@phillipneal8194
@phillipneal8194 4 жыл бұрын
Hi ! I am working on a program where I use your UART_RX and UART_TX to write back and forth to my MAC. But I want to save state on the fpga between reads and writes. For example, to calculate the sum of numbers arriving on the UART_RX then send the sum back to the MAC on the UART_TX. Can I put the "sum" variable in bram and still maintain state ?
@Nandland
@Nandland 4 жыл бұрын
BRAM is used for large amounts of data. "sum" is probably just a 16 or 32 bit register. That's small enough that it can go in normal register space. If it's > 1kb of memory then that's when BRAMs make sense.
@phillipneal8194
@phillipneal8194 4 жыл бұрын
@@Nandland Thank you for responding so quickly. 8-) Ok. So I am using your uart.v code with UART_RX and UART_TX. Between the two subroutines I stuck another subroutine that is called like this CHANGE SMALL (.a(w_RX_Byte), .b(o_Byte)); and then o_Byte is passed to UART_TX. The subroutine I use is called change.v and looks like this: module CHANGE ( input [7:0] a, output reg [7:0] b ); always @(*) begin sum
@phillipneal8194
@phillipneal8194 4 жыл бұрын
Ahhh, a small glimmer of understanding.... I was not using the correct architecture for passing in the full byte from UART_RX to my module. Inputs to a module are always wires. Outputs must be wires if they are going to be passed along to another module...
@user-hp9dc6kr1f
@user-hp9dc6kr1f 7 жыл бұрын
I have one question. If I made '8bits width' and '1024 depth' BRAM, than whole size of memory that I made is 8*1024bits??
@Nandland
@Nandland 7 жыл бұрын
Yes
@user-hp9dc6kr1f
@user-hp9dc6kr1f 7 жыл бұрын
Thanks
@shubhamchoudhary4855
@shubhamchoudhary4855 5 жыл бұрын
can you please make a video on distributed ram used in ultrascale fpgas and explain it in detail. thanks. awsm video
@Sarth_draws
@Sarth_draws 6 жыл бұрын
why do you want 1
@Nandland
@Nandland 6 жыл бұрын
I didn't write code for this... so any example code that I show I didn't personally create. However this looks like just a way to create a variable length memory. 1
@donatorenderos2970
@donatorenderos2970 Жыл бұрын
Block RAM or BRAM is a type of random access memory embedded throughout an FPGA for data storage. You can use BRAM to accomplish the following tasks, Transfer data between multiple clock domains by using local FIFOs. Transfer data between an FPGA target and a host processor by using a DMA FIFO
@stoka43
@stoka43 6 жыл бұрын
Thanks for the video, but you said that creating block of RAMs using interactive GUI is not recommended. Personally, I disagree with you and I think that depends on the manufacturer of the FPGA. I use xilinx core generator and I can see that it provides optimal solutions for many designs
@Nandland
@Nandland 6 жыл бұрын
I recommend it for beginners. But I've worked on projects with 50+ independent Block RAM GUI created cores. It's a nightmare. I prefer inferring them when possible as you get more comfortable with FPGA design.
@underscorewill
@underscorewill Жыл бұрын
poor quality
What is a FIFO in an FPGA
17:47
nandland
Рет қаралды 72 М.
What is a Clock in an FPGA?
18:58
nandland
Рет қаралды 52 М.
He sees meat everywhere 😄🥩
00:11
AngLova
Рет қаралды 11 МЛН
Дарю Самокат Скейтеру !
00:42
Vlad Samokatchik
Рет қаралды 2,3 МЛН
Zynq Part 1: Vivado block diagram (no Verilog/VHDL necessary!)
20:00
FPGAs for Beginners
Рет қаралды 18 М.
Crossing Clock Domains in an FPGA
16:38
nandland
Рет қаралды 66 М.
EEVblog #496 - What Is An FPGA?
37:44
EEVblog
Рет қаралды 757 М.
CONCURRENCY IS NOT WHAT YOU THINK
16:59
Core Dumped
Рет қаралды 89 М.
What is an FPGA? Intro for Beginners
13:22
nandland
Рет қаралды 363 М.
Designing a First In First Out (FIFO) in Verilog
24:41
Shepherd Tutorials
Рет қаралды 26 М.
Open-Source Tools for FPGA Development
38:27
The Linux Foundation
Рет қаралды 45 М.
Мой инст: denkiselef. Как забрать телефон через экран.
0:54
ИГРОВОВЫЙ НОУТ ASUS ЗА 57 тысяч
25:33
Ремонтяш
Рет қаралды 350 М.
Klavye İle Trafik Işığını Yönetmek #shorts
0:18
Osman Kabadayı
Рет қаралды 956 М.
Samsung Galaxy 🔥 #shorts  #trending #youtubeshorts  #shortvideo ujjawal4u
0:10
Ujjawal4u. 120k Views . 4 hours ago
Рет қаралды 3,3 МЛН