?? sram-pingpang.txt
字號:
設置乒乓轉換信號pi_pa;
片0的讀信號rd0和寫信號wr0,
片1的讀信號rd1和寫信號wr1;
片0的讀地址指針addr0_rd和寫地址指針addr0_wr,
片1的讀地址指針addr1_rd和寫地址指針addr1_wr;
片0的讀結束信號rd0_over,
片1的讀結束信號rd1_over。
//以下實現乒乓模式轉換
always @(negedge clkin or negedge rst)
begin
if (!rst) pi_pa <= 0;
else
begin
if (wr0 == 0 && addr0_wr == ADDRLEN) pi_pa <= ~pi_pa;
//當SRAM 0寫完最后一個單元后,轉換
if (wr1 == 0 && addr1_wr == ADDRLEN) pi_pa <= ~pi_pa;
//當SRAM 1寫完最后一個單元后,轉換
end
end
//以下實現兩片SRAM讀寫的互鎖功能
assign rd0 = pi_pa; //when rd0==0, read sram 0
assign wr1 = pi_pa; //when wr1==0, write sram 1
assign rd1 = ~pi_pa; //when rd1==0, read sram 1
assign wr0 = ~pi_pa; //when wr0==0, write sram 0
//對SRAM 0的控制
assign oe[0] = slwr || rd0; //當片0位于讀模式時,slwr控制片0的讀
assign we[0] = clkin || wr0; //當片0位于寫模式時,clkin控制片0的讀
assign srmaddr0 = rd0? addr0_wr: addr0_rd;
assign srmdata0 = wr0? 16'hzzzz: {indata+1,indata};
//當片0位于讀模式時,片0的地址線賦讀指針,數據線賦高阻
//當片0位于寫模式時,片0的地址線賦寫指針,數據線賦生成數據
//對SRAM 1的控制
assign oe[1] = slwr || rd1;
assign we[1] = clkin || wr1;
assign srmaddr1 = rd1? addr1_wr: addr1_rd;
assign srmdata1 = wr1? 16'hzzzz: {indata+10,indata};
//SRAM的讀結束信號
always @(negedge slwr or negedge rst)
begin
if (!rst)
begin
rd0_over <= 1;
rd1_over <= 1;
end
else
begin
if (addr0_rd == ADDRLEN) rd0_over <= 0;
else if (wr0 == 0) rd0_over <= 1;
//讀完SRAM 0的最后一個單元后,片0的讀結束信號置為無效,終止片0的讀過程,等待SRAM 1的寫過程結束,再置片0的讀結束信號為有效,從而不至于影響下一次片0的讀
if (addr1_rd == ADDRLEN) rd1_over <= 0;
else if (wr1 == 0) rd1_over <= 1;
end
end
//SRAM的讀指針操作,即讀完一個單元后指向下一單元
always @(negedge slwr or negedge rst)
begin
if (!rst)
begin
addr0_rd <= 0;
addr1_rd <= 0;
end
else
begin
if (rd0 == 0 && rd0_over == 1)
begin
addr0_rd <= addr0_rd + 1;
end
if (rd1 == 0 && rd1_over == 1)
begin
addr1_rd <= addr1_rd + 1;
end
end
end
//SRAM的寫指針操作,即寫完一個單元后指向下一單元
always @(negedge clkin or negedge rst)
begin
if (!rst)
begin
addr0_wr <= 0;
addr1_wr <= 0;
end
else
begin
if (wr0 == 0)
begin
addr0_wr <= addr0_wr + 1;
end
if (wr1 == 0)
begin
addr1_wr <= addr1_wr + 1;
end
end
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -