# BRAM generator 詳細設定 ## 2. BRAM Feature ### 2.1 Mode 1. BRAM controller : 只有用bram controller 不使用Custom ip 3. standalone : 反之 ![image](https://hackmd.io/_uploads/H1dpERRHp.png =500x) ### 2.2 Type 1. single port RAM : 單口可讀可寫RAM 2. True Dual-port RAM:雙口可讀可寫RAM 4. single port ROM :可讀不可寫ROM 5. dual-port ROM:可讀不可寫ROM ![image](https://hackmd.io/_uploads/BJetNCAH6.png =500x) ### 2.3 Signals description |signal name | Direction | Description | | -------- | -------- | -------- | | Signal Name | Direction | Description | |clka|Input|clk to port A| |rsta|Input|rst to port A| |addra|Input|對port A的addr| |dina|Input|對port A寫入的data| |douta|Output|對port A讀出的data| |ena|Input|對port A讀寫rst時需要此訊號| |wena|Input|對port A寫使能訊號| |regcea|Input|port A的可選後級輸出暫存器信號| ### 2.4 Selectable operating Mode per port 1. Write First 2. Read First 3. No change #### 2.4.1 Write First * 寫入優先於讀 ![image](https://hackmd.io/_uploads/BJRqPC0Ba.png) #### 2.4.2 Read First * 讀優先於寫入 ![image](https://hackmd.io/_uploads/BkufYRCST.png) #### 2.4.3 No change * wea拉起時讀出的值保持不變 ![image](https://hackmd.io/_uploads/rkN8YRCBp.png) ### 2.5 Collision * 多Port 寫入的問題 :::warning 1. 兩個 Port 的異步時鐘,一個 port 正在往一個位址寫數據,另一個 port 在指定時間內,必須不能夠去讀寫這個地方; 2. 兩個 Port 同步時鐘的情況下,兩個 Port 同時企圖寫同一個 memory 的情況下; 3. 使用 Byte-Writes 的時候,正好同時寫到了同一個地方的情況下; ::: ![image](https://hackmd.io/_uploads/rkG72RAH6.png =500x) ## reference : 1. https://blog.csdn.net/zhoutaopower/article/details/105257499