久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2723|回復(fù): 10
收起左側(cè)

CPLD 讀寫(xiě) SRAM 問(wèn)題

[復(fù)制鏈接]
ID:254256 發(fā)表于 2019-3-28 10:16 | 顯示全部樓層 |閱讀模式
請(qǐng)問(wèn)為什讀寫(xiě)SRAM 是 用  data_out[7:0] = mem1[addr];
xxx = mem1[addr] 為什這樣可以取出SRAM  的資料

mem2[addr] = xxxx;  
為什這樣可以寫(xiě)入 SRAM  的資料

為什  mem1[addr] 可以代表 SRAM 裡的資料



//--------------------------------------------------------程式代碼
module idt71v416s15(data, addr, we_, oe_, cs_, ble_, bhe_);

inout [15:0] data;
input [17:0] addr;
input we_, oe_, cs_, bhe_, ble_;


reg [7:0] mem1[0:262143];
reg [7:0] mem2[0:262143];
time adr_chng,da_chng,we_fall,we_rise,cs_fall,cs_rise;
time oe_fall,oe_rise,ble_fall,ble_rise,bhe_fall,bhe_rise;
wire [15:0] data_in;
reg  [15:0] data_out;
reg  [15:0] temp1,temp2,temp3;
reg outen, out_en, in_en;

initial
  begin
      in_en = 1'b1;
      if (cs_)
          out_en = 1'b0;
  end
// input/output control logic
//---------------------------
assign data   = out_en ? data_out : 'hzzzz;
assign data_in = in_en ? data : 'hzzzz;
// read access
//------------
always @(addr)
      if (cs_==0 & we_==1) begin           //read
          fork
          if(~ble_)
              #Taa data_out[7:0] = mem1[addr];
          else #Taa data_out[7:0] = 'hzz;
              if(~bhe_)
                 #Taa data_out[15:8] = mem2[addr];
              else #Taa data_out[15:8] = 'hzz;
          join
      end


always @(addr)
  begin
      adr_chng = $time;
      outen  = 1'b0;
      #Toh out_en = outen;
//---------------------------------------------
      if (cs_==0 & we_==1)                 //read
      begin
          if (oe_==0)
          begin
              outen = 1'b1;
              out_en = 1'b1;
          end
      end
//---------------------------------------------
      if (cs_==0 & we_==0)                 //write
      begin
          if (oe_==0)
          begin
              outen = 1'b0;
              out_en = 1'b0;
              temp1 = data_in;
              fork
                if(~ble_)
                   #Tdw mem1[addr] = temp1[7:0];
                if(~bhe_)
                   #Tdw mem2[addr] = temp1[15:8];
              join
          end
          else
          begin
              outen = 1'b0;
              out_en = 1'b0;
              temp1 = data_in;
              fork
                if(~ble_)
                  #(Tdw-Toh) mem1[addr] = temp1[7:0];
                if(~bhe_)
                  #(Tdw-Toh) mem2[addr] = temp1[15:8];
              join
          end
          if(~ble_)
              data_out[7:0] = mem1[addr];
          else data_out[7:0] = 'hzz;
          if(~bhe_)
              data_out[15:8] = mem2[addr];
          else data_out[15:8] = 'hzz;
      end
  end




回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2019-3-28 11:14 | 顯示全部樓層
你需要查:mem1[addr] 的定義(或函數(shù)功能程序)。
回復(fù)

使用道具 舉報(bào)

ID:158375 發(fā)表于 2019-3-28 11:25 | 顯示全部樓層
沒(méi)有問(wèn)什么,你看看data_out[7:0] = mem1[addr]; 和 mem2[addr] = xxxx;編譯后的匯編就明白了。
回復(fù)

使用道具 舉報(bào)

ID:254256 發(fā)表于 2019-3-28 13:02 | 顯示全部樓層
笨笨兔 發(fā)表于 2019-3-28 11:25
沒(méi)有問(wèn)什么,你看看data_out[7:0] = mem1[addr]; 和 mem2[addr] = xxxx;編譯后的匯編就明白了。

可以解釋一下嗎
回復(fù)

使用道具 舉報(bào)

ID:254256 發(fā)表于 2019-3-28 13:03 | 顯示全部樓層
yzwzfyz 發(fā)表于 2019-3-28 11:14
你需要查:mem1[addr] 的定義(或函數(shù)功能程序)。

定義在這啊

reg [7:0] mem2[0:262143];
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2019-3-28 17:18 | 顯示全部樓層
兄弟,在這大多是學(xué)單片機(jī)的,而且大多還是8051為主的,我就是其中之一
用CPLD的人真不多,我估計(jì)可能有人會(huì)把你這段代碼當(dāng)成是C語(yǔ)言來(lái)看了
那玩意跟單片機(jī)還是有很多不同的地方的,編程思路也是不太一樣的,一般人玩不來(lái)
還是自己慢慢解決問(wèn)題吧
回復(fù)

使用道具 舉報(bào)

ID:254256 發(fā)表于 2019-3-28 23:22 | 顯示全部樓層
Y_G_G 發(fā)表于 2019-3-28 17:18
兄弟,在這大多是學(xué)單片機(jī)的,而且大多還是8051為主的,我就是其中之一
用CPLD的人真不多,我估計(jì)可能有人會(huì)把 ...

不會(huì)吧一定有高手
我不搞8051 了
搞STM32 後改搞CPLD 太靈活了
你要100 個(gè)定時(shí)器也有
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2019-3-29 00:30 | 顯示全部樓層
u012801 發(fā)表于 2019-3-28 23:22
不會(huì)吧一定有高手
我不搞8051 了
搞STM32 後改搞CPLD 太靈活了

既然你都學(xué)了硬件描述語(yǔ)言,那就是已經(jīng)有了基礎(chǔ)了,干脆直接轉(zhuǎn)FPGA,那難度大,但工資老高了
回復(fù)

使用道具 舉報(bào)

ID:254256 發(fā)表于 2019-3-29 00:42 | 顯示全部樓層
自己搞不到一個(gè)月
寫(xiě)了按鍵去抖
及流水燈
其他什都不會(huì)

那個(gè)問(wèn)題是不是像D 類(lèi)觸發(fā)器
有人可以解答嗎

為什  mem1[addr] 可以代表 SRAM 裡的資料

為什啊
回復(fù)

使用道具 舉報(bào)

ID:575109 發(fā)表于 2020-10-5 00:36 來(lái)自觸屏版 | 顯示全部樓層
reg [7:0] mem1[0:262143];在內(nèi)部已經(jīng)定義了一個(gè)數(shù)組,數(shù)組字節(jié)寬度8bit 深度262144,就是用內(nèi)部寄存器組代替sram存儲(chǔ)資料
回復(fù)

使用道具 舉報(bào)

ID:83553 發(fā)表于 2020-10-5 08:56 | 顯示全部樓層
什么芯片能定義這么大的數(shù)組?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: аⅴ资源新版在线天堂 | 久久精品99国产精品 | 91精品国产麻豆 | 亚洲午夜网 | 四虎永久影院 | 欧美日韩一区二区三区在线观看 | 日韩国产精品一区二区三区 | 欧美日韩在线视频一区二区 | 国产一区 | 久草福利 | pacopacomama在线| 久久噜噜噜精品国产亚洲综合 | 成人毛片一区二区三区 | 日韩视频一区二区 | 久久高清 | 亚洲视频第一页 | 欧美日韩一区二区在线 | 日本精品一区二区三区在线观看视频 | 欧美淫片 | 亚洲视频www | 夜夜草 | 成人综合伊人 | 国产一区在线免费 | 欧美一区二区三区视频在线观看 | 国产日韩视频 | 亚洲国产精品成人久久久 | 一区在线播放 | 日本天天色 | 午夜网 | 欧美中文字幕一区二区三区亚洲 | 久久精品免费观看 | 欧美一级大片 | 精品自拍视频 | 欧美激情精品久久久久久变态 | 午夜影院免费体验区 | 视频在线一区二区 | 三级黄视频在线观看 | 日本天堂一区二区 | 天天欧美 | 日韩一区二区三区在线 | 99小视频 |