日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Altera FPGA 储存单元IP核之RAM、FIFO

發布時間:2023/12/9 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Altera FPGA 储存单元IP核之RAM、FIFO 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、儲存單元簡介

????1.ROM

? ? ?只讀存儲器,系統上電后數據就被寫入ROM,運行過程中只能從ROM中讀取數據,而不能改變ROM中的數值。

? ? 2.RAM

? ? ?隨機存取儲存器,可以隨時把數據寫入任一指定地址的儲存單元,也可以隨時從任一指定地址中讀取數據。其讀寫速度是由時鐘頻率決定的。RAM主要用來存放程序及程序執行過程中產生的中間數據、運算結果等。適合雙向交換數據。

? ? ?????????2.1RAM的分類

? ? ? ? ? ? ?Altera FPGA的RAM IP核分為兩種類型:單端口RAM和雙端口RAM。單端口RAM只有一組地址線,這組地址線控制著寫數據端口和讀數據端口,而雙端口RAM具有兩組地址線,這兩組地址線分別控制著寫數據端口和讀數據端口。單端口RAM類型和雙端口RAM類型在操作上都是一樣的。下面以單端口RAM IP核為例。

Data

RAM寫數據端口

Address

寫使能信號,高電平有效,高電平時data口的數據才能被寫入

Wren

寫使能信號,高電平有效,高電平時RAM中的數據才能被讀出

rden

讀使能信號,高電平有效,高電平時RAM中的數據才能被讀出

Clken

時鐘使能信號,用于控制時鐘是否有效

aclr

異步復位信號,高電平有效

Inclock

outclock

單口RAM端口支持雙時鐘模式和單時鐘模式。在雙時鐘模式下,輸入時鐘控制存儲器模塊的輸入寄存器,其中包括數據、地址、wren以及rden寄存器;輸出時鐘控制數據輸出寄存器。在單時鐘模式下,沒有Inclock信號與outclock信號之分,只有一個clock信號,可以通過單時鐘以及時鐘使能來控制M9K存儲器模塊中的所有寄存器。

? ? ? ? ? ?2.2雙端口RAM介紹

???????????分為簡單雙口RAM和真雙口RAM兩種:

?????? ????簡單雙口RAM:一組讀數據和讀地址線,一組寫數據和寫地址線,能同時進行讀和寫操作,但不能同時對同一地址進行讀和寫操作。

? ? ? ? ? ?真雙口RAM:有兩組讀數據線線與地址線,兩組寫數據線與寫地址線;能同時進行兩個端口讀,能同時進行兩個端口寫,也能一個端口讀同時另一個端口寫。這個真雙口RAM其實就是兩個單口RAM組合在一起構成的,只是真雙口RAM里的兩個單口RAM是操作的同一片存儲空間。

?

? ?3.FIFO

? ?(不尋址,操作簡單)適合數據緩沖、跨時鐘域數據同步,數據位寬匹配處理。

? ? ? ? ? ? ?3.1FIFO的基本介紹

??????????????FIFO的英文全稱是First In First Out,即先進先出。FPGA使用的FIFO一般指的是對數據的存儲具有先進先出特性的一個緩存器,常被用于數據的緩存或者高速異步數據的交互,也即所謂的跨時鐘域信號傳遞。

????????????它與FPGA內部的RAM和ROM的區別是沒有外部讀寫地址線,采取順序寫入數據,順序讀出數據的方式,使用起來簡單方便,由此帶來的缺點是不能像RAM和ROM那樣可以由地址線決定讀取或寫入某個指定的地址。

? ? ? ? ? ? ? 3.2FIFO的分類

? ? ? ? ? ? ? ? FIFO從輸入時鐘的角度來分,有兩種類型:單時鐘FIFOSCFIFO雙時鐘FIFODCFIFO;其中,雙時鐘FIFO又可從輸出數據的位寬的角度,分為普通雙時鐘(DCFIFO混合寬度雙時鐘FIFODCFIFO_MIXED_WIDTHS)。

????????????????單時鐘FIFO具有一個獨立的時鐘端口clock,因此,所有的輸入輸出信號都同步于clock信號。

????????????????雙時鐘FIFO結構中,寫端口和讀端口分別有獨立的時鐘,所有與寫相關的信號都是同步于寫時鐘wrclk,所有與讀相關的信號都是同步于讀時鐘rdclk。

? ? ? ? ? ? ? ? 3.3FIFO的參數

1.FIFO的寬度:FIFO一次讀寫操作的數據位N;

2.FIFO的深度:FIFO可以儲存多少個寬度位N位的數據;

3.空標志:對于雙時鐘FIFO,又分為讀空rdempty和寫空標志wrempty;FIFO已空或將要空時由FIFO的狀態電路送出的一個信號,以阻止繼續從FIFO中讀出數據而造成無效數據的讀出。

4.滿標志:對于雙時鐘FIFO,又分為讀滿標志rdfull和寫滿標志wrfull;FIFO已滿或將要寫滿時由FIFO的狀態電路送出的一個信號,以阻止繼續向FIFO中寫數據而造成溢出。

5.讀時鐘:讀FIFO時所遵循的時鐘,在每個時鐘的上升沿觸發。

6.寫時鐘:寫FIFO時所遵循的時鐘,在每個時鐘的上升沿觸發。

? ? ? ? ? ? ? ? ?3.4單時鐘FIFO和雙時鐘FIFO的應用場景

????????????????1.單時鐘FIFO常用于同步時鐘的數據緩沖;

????????????????2.雙時鐘FIFO常用于跨時鐘域的數據信號的傳遞,例如時鐘域A下的數據data傳遞給異步時鐘域B,當data為連續變化信號時,如果直接傳遞給時鐘域B則可能會導致收非所送的情況,即在采集過程中會出現包括亞穩態(數據采樣失真)問題在內的一系列問題,使用雙時鐘FIFO能將不同時鐘域中的數據同步到所需的時鐘域中。

二、儲存單元測試代碼

? ? ? ? ? ? 1.RAM

`timescale 1ns/1nsmodule tb_ram(); //激勵信號reg clk ;reg rst_n ; reg [07:00] address ;reg [07:00] data ;reg rden ;reg wren ;//觀測信號 wire [07:00] data_out ; //模塊例化 s_ram_256_8 s_ram_256_8_inst (.aclr ( ~rst_n ),.address ( address ),.clock ( clk ),.data ( data ),.rden ( rden ),.wren ( wren ),.q ( data_out));//系統初始化initial beginclk = 1'b1;forever begin#10 clk = ~clk;endendinitial beginrst_n =1'b0 ;address = 8'd0 ;data = 8'h33 ; rden = 1'b0 ;wren = 1'b0 ;#203rst_n = 1'b1 ;//讀取一遍儲存空間所有數據repeat(256)beginrden = 1'b1;#20address = address + 8'd1;end rden = 1'b0;//讀取使能關閉//寫入數據repeat(256)beginwren = 1'b1;#20data = data + 8'h2;address = address + 8'd1;endwren = 1'b0;//寫入使能關閉#1000;//再次讀取repeat(256)beginrden = 1'b1;#20address = address + 8'd1;end #1000$stop(2) ;endendmodule

? ? ? ? ? ?2.FIFO

`timescale 1ns/1ps module tb_fifo_test();//激勵信號reg clk; reg rst_n;reg [07:00] data_in; reg wrreq; reg rdreq; wire rdempty; wire [07:00] rdusedw; wire wrfull; wire [08:00] wrusedw;wire [15:00] data_out;//模塊例化 fifo_test U_fifo_test(.clk (clk) ,.rst_n (rst_n) ,.data_in (data_in) ,.wrreq (wrreq) ,.rdreq (rdreq) ,.rdempty (rdempty) ,.rdusedw (rdusedw) ,.wrfull (wrfull) ,.wrusedw (wrusedw) ,.data_out (data_out) );//系統初始化initial beginclk = 1'b1;forever begin#10 clk = ~clk;endendinitial beginrst_n =1'b0 ;data_in = 8'h0 ; rdreq = 1'b0 ;wrreq = 1'b0 ;#203rst_n = 1'b1 ;//寫入數據repeat(512)beginwrreq = 1'b1;#20data_in = data_in + 8'h2;end wrreq = 1'b0;//寫入請求關閉//讀出數據rdreq = 1'b1;#10000$stop(2) ;endendmodule

總結

以上是生活随笔為你收集整理的Altera FPGA 储存单元IP核之RAM、FIFO的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。