最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

數(shù)字IC手撕代碼-雙端口RAM(dual-port-RAM)

2022-04-23 01:04 作者:不吃蔥的酸菜魚  | 我要投稿

????????大家好我是酸菜魚,這個系列著重講解數(shù)字ic或FPGA實習(xí)面試及秋招面試的高頻手撕代碼題。

往期專欄:

數(shù)字ic手撕代碼-導(dǎo)覽目錄 - 嗶哩嗶哩 (bilibili.com)

數(shù)字ic手撕代碼-格雷碼的編碼與解碼 - 嗶哩嗶哩 (bilibili.com)

數(shù)字IC手撕代碼-序列檢測(移位寄存器寫法) - 嗶哩嗶哩 (bilibili.com)

專欄眾多,不一一列舉,詳情請看導(dǎo)覽目錄...?


雙端口RAM

????????這篇文章來介紹雙端口RAM,目的是為后續(xù)的同步FIFO和異步FIFO打下基礎(chǔ),我們都知道其實FIFO就類似一個RAM,但是它對輸入輸出的信號做了處理,可以使得數(shù)據(jù)在跨時鐘域的時候不會出錯。寫FIFO都是要調(diào)用RAM的,那么一個雙端口RAM怎么寫呢?

????????雙端口RAM分很多種,同步雙端口RAM(讀寫同時鐘),異步雙端口RAM(讀寫分別用讀時鐘和寫時鐘),以及每種雙端口RAM又分為雙端口RAM真雙端口RAM。偽雙端口RAM是指有兩個讀寫通道,其中一個用來讀另一個用來寫。而真雙端口 RAM 指的是有兩個讀寫端口,每個端口都可以獨立發(fā)起讀或者寫。

????????而單端口RAM就是對一個通道又讀又寫。

????????一個偽雙端口RAM,一個通道讀,一個通道寫,寫通道有寫數(shù)據(jù)、寫地址和寫使能,讀通道有讀數(shù)據(jù)、讀地址和讀使能,再加上輸入時鐘,構(gòu)成輸入輸出的端口。一個簡單的雙端口RAM可以寫成如下:

簡單雙端口RAM

用兩個過程語句塊描述,一個通道讀,一個通道寫。如果是異步的時鐘,即讀寫不是同一時鐘的話,可以修改兩個過程語句塊的敏感事件列表,一個改成always@(posedge clkw),另一個改成always@(posedge clkr)即可。

而對于一個真雙端口RAM,兩個通道即可讀又可寫,怎么處理呢?

????????真雙端口RAM,每個通道都有通道使能、輸入數(shù)據(jù)、輸出數(shù)據(jù)、數(shù)據(jù)地址、寫使能、通道時鐘六個端口,所以真雙端口RAM共有12個端口。通道a一套,通道b一套。

????????對真雙端口RAM的一個通道來說,當(dāng)通道使能時,如果寫使能,則把值寫入到RAM的addra地址,并讀出RAM位于addra地址的舊的值。如果寫不使能,則讀出RAM位于addra地址的數(shù)據(jù)。

testbench:

仿真波形:

????????之所以輸出數(shù)據(jù)會出現(xiàn)紅線,是因為RAM的一開始數(shù)值是不確定的,所以在每次切換地址后,讀取出來的RAM對應(yīng)地址的舊的值是不確定的,所以是紅線。過一個周期后,改地址被寫入新的值,新的值被讀出,所以有data_o_a/b有數(shù)據(jù)。

????????當(dāng)然我們這里還要提一下,可能有人會問,你這里不會出現(xiàn)讀寫沖突嗎。你這里怎么判斷空滿,寫滿了怎么停止寫入,讀空了怎么停止讀出呢?

????????對于第一個問題,兩個通道對RAM的同一塊地址同時進行讀寫,這個的解決辦法是在一開始的時候,就不要讓addra=addrb,解決問題的最好辦法就是不讓問題發(fā)生。

????????對于第二個問題,關(guān)于地址指針和空滿判斷其實不屬于RAM的范疇,RAM可以把它理解為一個存儲的空間,具體的指針控制和空滿判斷其實是RAM外部添加的一些控制信號。不屬于RAM的范疇,具體如何解決地址指針移動及空滿判斷問題,會在同步FIFO及異步FIFO中給出詳細解答。

數(shù)字IC手撕代碼-雙端口RAM(dual-port-RAM)的評論 (共 條)

分享到微博請遵守國家法律
宣武区| 福清市| 佛坪县| 习水县| 房产| 璧山县| 尖扎县| 突泉县| 巴彦县| 海林市| 郎溪县| 昌都县| 林口县| 景德镇市| 吴川市| 和林格尔县| 武城县| 寻甸| 澳门| 武威市| 高州市| 永定县| 上杭县| 沾化县| 神木县| 纳雍县| 鲁山县| 丽江市| 马尔康县| 黔西县| 崇阳县| 咸阳市| 广水市| 芒康县| 清镇市| 南岸区| 依兰县| 台东县| 襄城县| 永州市| 广元市|