国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于FPGA 的SDRAM控制器

這篇具有很好參考價(jià)值的文章主要介紹了基于FPGA 的SDRAM控制器。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

SDRAM基本信息

儲(chǔ)存能力計(jì)算

  • 基于FPGA 的SDRAM控制器
  • 4X16X4=256(Mbit),注意不是MByte

SDRAM控制

sdram包含兩個(gè)部分:sdram_ctrl、fifo_ctrl。

  • sdram_ctrl:其頂層為SDRAM的控制模塊內(nèi)部實(shí)例化了5個(gè)模塊,有初始化、自刷新、寫和讀模塊,還有一個(gè)仲裁模塊對(duì)這四個(gè)不同操作進(jìn)行分配;
  • fifo_ctrl:其頂層為SDRAM的數(shù)據(jù)輸入輸出,內(nèi)部實(shí)例化了兩個(gè)用于連接SDRAM輸入和輸出端的FIFO,以及控制程序

sdram_ctrl模塊內(nèi)部例化了四個(gè)模塊

初始化模塊sdram_init

  • SDRAM在上電后首先需要執(zhí)行初始化操作,才可執(zhí)行其他操作。

  • 配置寄存器模式

  • 潛伏期為三個(gè)周期

  • 突發(fā)長(zhǎng)度為頁突發(fā)

  • 突發(fā)類型為順序類型

  • 寫模式為頁突發(fā)寫模式

  • 信號(hào)操作:

    1. 正常加載時(shí)鐘信號(hào):設(shè)置CKE時(shí)鐘使能為高電平CKE = 1
    2. 等待Vdd和CLK信號(hào)穩(wěn)定:等待T= 200us
    3. 進(jìn)行預(yù)充電操作,對(duì)所有L-Bank進(jìn)行預(yù)充電:cmd = PRECHARGE,A10 = 1
    4. 等待預(yù)充電操作:cmd = NOP,TRP =20ns
    5. 自動(dòng)刷新命令:cmd = AUTO REFRESH
    6. 等待自動(dòng)刷新:cmd = NOP,TRFC = 70ns
    7. 重復(fù)多次自動(dòng)刷新操作:重復(fù)8次
    8. 配置模式寄存器:cmd = LOAD MODE REGISTER,address= ,A10 = ,bank = 0
    9. 等待配置模式寄存器完成,TMRD = 30ns
      基于FPGA 的SDRAM控制器
  • 總體采用狀態(tài)機(jī)來設(shè)計(jì),分為以下幾個(gè)狀態(tài):

    1. 初始化
    2. 預(yù)充電
    3. 預(yù)充電等待
    4. 自動(dòng)刷新
    5. 自動(dòng)刷新等待
    6. 配置模式寄存器
    7. 配置模式寄存器等待
    8. 初始化完成
  • 為了防止亞穩(wěn)態(tài)的產(chǎn)生,狀態(tài)機(jī)編碼均使用格雷碼

  • 跳轉(zhuǎn)條件使用計(jì)數(shù)器進(jìn)行計(jì)數(shù)完成判斷

    • cnt_clk,等待狀態(tài)的計(jì)數(shù)器
    • cnt_clk_rst,負(fù)責(zé)等待計(jì)數(shù)器的清零操作
  • 另外為了跳轉(zhuǎn)操作代碼簡(jiǎn)潔,聲明組合邏輯的信號(hào)完成各個(gè)狀態(tài)的跳轉(zhuǎn)

    • trp_end
    • trc_end
    • tmrd_end
  • 由于自動(dòng)刷新信號(hào)需要重復(fù)進(jìn)行,因此使用計(jì)數(shù)器完成自動(dòng)刷新操作計(jì)數(shù)

    • cnt_init_aref,計(jì)數(shù)自動(dòng)刷新操作的重復(fù)個(gè)數(shù)
  • 最終按照各個(gè)狀態(tài)完成輸出信號(hào)的幅值,注意使用的為時(shí)序邏輯,因此輸出相比狀態(tài)跳轉(zhuǎn)延遲一拍文章來源地址http://www.zghlxwxcb.cn/news/detail-710048.html

自動(dòng)刷新模塊sdram_a_ref

  • SDRAM刷新有兩種操作方式:
    • 自刷新:用于休眠模式可以低功耗的保存數(shù)據(jù)
      • 操作:CKR信號(hào)為低電平時(shí),寫入刷新指令,進(jìn)入自刷新模式,當(dāng)CKE信號(hào)拉高時(shí),退出自刷新模式;
    • 自動(dòng)刷新模式:由于SDRAM動(dòng)態(tài)特性,使用電容來保存數(shù)據(jù),因此需要不斷對(duì)電容進(jìn)行充放電,以此保證數(shù)據(jù)不丟失。本文主要討論自動(dòng)刷新。
  • 自動(dòng)刷新操作需要不斷的循環(huán)操作,是一個(gè)周期操作,至少需要每64ms完成一次。
  • 自動(dòng)刷新時(shí)間計(jì)算
    • 存儲(chǔ)體中電容的數(shù)據(jù)有效保存期上限是 64ms那么使用的SDRAM的地址位寬為13位,共有2^13=8192行。
    • 那么每行刷新的時(shí)間為:64ms/8192=64*1000000ns/8192=7812.5ns。
    • SDRAM的時(shí)鐘為100MHz,周期為10ns,那么計(jì)數(shù)器最大值為:7812.5/10=781.25個(gè)。
    • 但是由于自動(dòng)刷新操作和寫讀請(qǐng)求會(huì)產(chǎn)生沖突,會(huì)出現(xiàn)不會(huì)立即刷新的情況,因此需要保留一段時(shí)間,那么設(shè)置計(jì)數(shù)器最大值為750個(gè),要求在7500ns中完成其中一行的刷新。
  • 信號(hào)操作
    1. 預(yù)充電操作:cmd = PRECHARGE、A10 = 1、bank = 2'b11
    2. 預(yù)充電等待:cmd = NOP,TRP = 20ns
    3. 自動(dòng)刷新:cmd = PRECHARGE
    4. 自動(dòng)刷新等待:cmd = NOP,TRFC = 70ns
    5. 自動(dòng)刷新重復(fù)兩次
      基于FPGA 的SDRAM控制器
  • 初始化模塊為所有信號(hào)的首位,因此需要初始化信號(hào)拉高后在開始執(zhí)行
    • init_end = 1時(shí),模塊開始正常工作
  • 由于是一個(gè)周期信號(hào),那么需要一個(gè)計(jì)數(shù)器進(jìn)行周期計(jì)數(shù),并以此信號(hào)完成狀態(tài)機(jī)的啟動(dòng)。
    • cnt_ref作為計(jì)數(shù)器,最大值經(jīng)計(jì)算為750-1,并且達(dá)到最大值后清零繼續(xù)計(jì)數(shù)
  • 其余信號(hào)需要在狀態(tài)機(jī)跳轉(zhuǎn)下進(jìn)行操作:
    1. 初始
    2. 預(yù)充電
    3. 預(yù)充電等待
    4. 自動(dòng)刷新
    5. 自動(dòng)刷新等待
    6. 自動(dòng)刷新結(jié)束
  • 另外自動(dòng)刷新需要和仲裁模塊進(jìn)行握手,當(dāng)仲裁模塊同意進(jìn)行刷新操作時(shí),才可進(jìn)行該操作
    • 當(dāng)內(nèi)部計(jì)數(shù)器cnt_ref達(dá)到最大值時(shí),此時(shí)需要自動(dòng)刷新,拉高自動(dòng)刷洗請(qǐng)求信號(hào)aref_req = 1,仲裁模塊接受該信號(hào),進(jìn)行判斷若同意則拉高自動(dòng)刷新使能信號(hào),aref_en = 1。
    • 當(dāng)自動(dòng)刷新完成,拉高自動(dòng)刷新結(jié)束信號(hào),aref_end= 1,仲裁模塊接受該信號(hào),拉低自動(dòng)刷新使能信號(hào),aref_en = 0;

寫操作模塊sdram_write

  • 本模塊使用的寫操作模式為:不自動(dòng)進(jìn)行預(yù)充電的頁突發(fā)寫模式
  • 信號(hào)操作
    1. 激活L-Bank特定行:
      1. cmd = ACTIVE
      2. address = 特定寫入行地址
      3. bank = 特定寫入bank地址
    2. 等待激活
      1. cmd = NOP
    3. 寫數(shù)據(jù)命令
      1. cmd = WRITE
      2. address = 特定寫入列地址
      3. DQ = 寫入第一個(gè)數(shù)據(jù)
    4. 寫入數(shù)據(jù)中
      1. cmd = NOP
      2. DQ = 開始寫入第二個(gè)數(shù)據(jù),每隔一個(gè)周期寫入一個(gè)數(shù)據(jù)
    5. 突發(fā)終止命令
      1. cmd = BURST TERM
      2. DQ = 不寫入數(shù)據(jù)
    6. 預(yù)充電命令
      1. cmd = PRECHARGE
      2. A10 = 1
      3. bank = 2'b11
    7. 預(yù)充電等待
      1. cmd = NOP
      2. TRP = 20ns
        基于FPGA 的SDRAM控制器
  • 當(dāng)初始化模塊完成初始化后才可以SDRAM才可以正常操作
    • init_end = 1,此時(shí)寫模塊才可以正常開始工作
  • sdram模塊的寫操作是由SDRAM上端的fifo模塊發(fā)起請(qǐng)求,經(jīng)過sdram仲裁器同意后開始執(zhí)行寫操作的
    • SDRAM仲裁器判斷可以寫入時(shí)拉高,wr_en = 1
  • 當(dāng)寫數(shù)據(jù)操作執(zhí)行完畢后狀態(tài)機(jī)跳轉(zhuǎn)至寫結(jié)束狀態(tài)時(shí),通過組合邏輯賦值將寫結(jié)束信號(hào)拉高
    • wr_end = 1
  • 另外當(dāng)FIFO請(qǐng)求向SDRAM寫入數(shù)據(jù)時(shí),SDRAM并不能直接開始寫入,因此當(dāng)真正開始寫入數(shù)據(jù)時(shí)需要一個(gè)提前一拍的響應(yīng)信號(hào)告知fifo可以輸出數(shù)據(jù)
    • wr_ack = 1
    • 相比于寫數(shù)據(jù)的同步信號(hào)需要提前一拍,作為FIFO的讀出數(shù)據(jù)的讀請(qǐng)求信號(hào)
  • 其余信號(hào)在狀態(tài)機(jī)下完成
    1. 初始狀態(tài)
    2. 激活命令
    3. 激活等待
    4. 寫命令
    5. 寫等待
    6. 預(yù)充電
    7. 預(yù)充電等待
    8. 寫結(jié)束
  • 寫入數(shù)據(jù)的信息由外部信號(hào)傳入,具體為輸入端的FIFO傳入
    • [23:0] wr_addr:寫入數(shù)據(jù)的地址,可以分割為:2bit bank地址、13bit 行地址、9bit 列地址
    • [15:0] wr_data,寫入數(shù)據(jù)
    • [9:0] wr_burst_len,寫入數(shù)據(jù)個(gè)數(shù)
  • 除了常規(guī)控制信號(hào)輸出外還有一個(gè),控制SDRAM數(shù)據(jù)總線輸出使能信號(hào),該信號(hào)和真正寫入sdram的數(shù)據(jù)同步。

讀操作模塊 sdram_read

  • SDRAM數(shù)據(jù)讀方式為:不帶自動(dòng)預(yù)充電的頁突發(fā)讀模式
  • 信號(hào)操作
    1. 激活L-Bank的特定行
      1. cmd = ACTIVe
      2. address = Row
      3. bank = 2‘b11
    2. 等待激活
      1. CMD = NOP
      2. TRCD =
    3. 讀命令
      1. CMD = READ
      2. address = column
    4. 讀出數(shù)據(jù)
      1. cmd = NOP
      2. 潛伏期設(shè)置為3,因此在寫入讀命令后的間隔3個(gè)周期,會(huì)有讀數(shù)據(jù)的輸出
    5. 突發(fā)終止
      1. cmd = BURST TERM
        基于FPGA 的SDRAM控制器
  • 讀數(shù)據(jù)操作需要在初始化操作完成后進(jìn)行
    • 當(dāng)init_end = 1 時(shí),sdram_read進(jìn)入正常工作模式
  • sdram讀數(shù)據(jù)操作是由外部信號(hào)發(fā)起的,具體而言是SDRAM下端FIFO發(fā)出的讀請(qǐng)求信號(hào),并且該信號(hào)需要經(jīng)過仲裁器判斷后生效,仲裁器拉高讀使能信號(hào)
    • rd_en = 1,讀模塊開始進(jìn)行讀操作
  • 當(dāng)sdram_read讀操作完成后,狀態(tài)機(jī)進(jìn)入結(jié)束狀態(tài),使用組合邏輯同步拉高讀結(jié)束信號(hào)
    • rd_end = 1
  • 由于數(shù)據(jù)需要存入下端FIFO模塊因此需要輸出一個(gè)讀模塊工作響應(yīng)信號(hào),并且需要與數(shù)據(jù)同步,作為FIFO輸入的寫請(qǐng)求信號(hào)
    • rd_ack = 1,需要和輸出數(shù)據(jù)同步
  • 其余信號(hào)在狀態(tài)機(jī)下完成
    1. 空閑狀態(tài)
    2. 激活
    3. 激活等待
    4. 讀命令
    5. 潛伏期
    6. 讀數(shù)據(jù)
    7. 預(yù)充電
    8. 預(yù)充電等待
    9. 讀結(jié)束
  • 并且為了盡可能的滿足建立時(shí)間,SDRAM真正的驅(qū)動(dòng)信號(hào)相比SDRAM的控制信號(hào)有-75°的相移,因此為了將SDRAM的輸入數(shù)據(jù)納入本時(shí)鐘域,需要對(duì)SDRAM的輸出數(shù)據(jù)進(jìn)行打拍操作,因此看起來并不會(huì)有一拍的延遲,因?yàn)镾DRAM的輸出本身就是提前了一些。
    • 75°相移更多的是時(shí)序上的考量,本質(zhì)上是犧牲了保持時(shí)間換取建立時(shí)間的冗余
  • 最終SDRAM讀出的數(shù)據(jù)和其同步信號(hào)輸出至下端的FIFO
    • rd_sdram_data
    • rd_ack

仲裁模塊 sdram_arbit

  • SDRAM共有四種操作模式,且有著明確的執(zhí)行 優(yōu)先級(jí)要求,其中初始化最高,次之自動(dòng)刷新,最后是寫讀操作。在實(shí)際使用中不免會(huì)遇到多個(gè)模塊同時(shí)需要執(zhí)行或者當(dāng)前執(zhí)行過程中有新的請(qǐng)求需要執(zhí)行這兩種情況,此時(shí)就需要仲裁器來保證SDRAM收到的請(qǐng)求正常被執(zhí)行。
    基于FPGA 的SDRAM控制器
  • 同時(shí)優(yōu)先級(jí)的判斷在狀態(tài)跳轉(zhuǎn)條件處體現(xiàn),以及在各個(gè)操作模塊的使能信號(hào)判斷條件處體現(xiàn)

到了這里,關(guān)于基于FPGA 的SDRAM控制器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于FPGA的電風(fēng)扇控制器verilog,視頻/代碼

    基于FPGA的電風(fēng)扇控制器verilog,視頻/代碼

    名稱:基于FPGA的電風(fēng)扇控制器verilog 軟件:QuartusII 語言:Verilog 代碼功能: 基于FPGA的電風(fēng)扇控制器 ?運(yùn)用 EDA SOPO實(shí)驗(yàn)開發(fā)系統(tǒng)設(shè)計(jì)一個(gè)基于FPGA的電風(fēng)扇定時(shí)開關(guān)控制器,能實(shí)現(xiàn)手動(dòng)和自動(dòng)模式之間的切換。要求:? (1)KI為電源開關(guān)由電源開關(guān)控制電風(fēng)扇的開關(guān),即當(dāng)K1為高電平“

    2024年02月07日
    瀏覽(22)
  • FPGA實(shí)現(xiàn)PID控制器——基于Quartus prime 18.0

    FPGA實(shí)現(xiàn)PID控制器——基于Quartus prime 18.0

    目錄 ?1. PID控制器和離散化PID控制器 1.1 PID控制器 1.1.1 P控制器 1.1.2 穩(wěn)態(tài)誤差和I控制器 1.1.3 超調(diào)和D控制器 1.2 離散式PID控制器——位置式PID控制器 2.PID控制系統(tǒng)Simulink仿真 3.Verilog代碼編寫和Modelsim仿真 3.1 誤差計(jì)算模塊和PID算法模塊編寫 3.1.1 誤差計(jì)算模塊 3.1.2 PID算法模塊 3

    2024年02月03日
    瀏覽(35)
  • 基于FPGA和Verilog實(shí)現(xiàn)的9層電梯控制器仿真設(shè)計(jì)

    基于FPGA和Verilog實(shí)現(xiàn)的9層電梯控制器仿真設(shè)計(jì)

    資源下載地址:https://download.csdn.net/download/sheziqiong/85628810 資源下載地址:https://download.csdn.net/download/sheziqiong/85628810 電梯最少可以往返于0—9層樓。 乘客要去的樓層數(shù)A可手動(dòng)輸入并顯示,按取消鍵可清除本次輸入。 可自動(dòng)顯示電梯運(yùn)行的樓層數(shù)B 當(dāng)AB時(shí),電梯上升; 當(dāng)AB時(shí),

    2024年02月02日
    瀏覽(31)
  • 基于ARM+FPGA的驅(qū)控一體機(jī)器人控制器設(shè)計(jì)

    基于ARM+FPGA的驅(qū)控一體機(jī)器人控制器設(shè)計(jì)

    目前市場(chǎng)上工業(yè)機(jī)器人,數(shù)控機(jī)床等多軸運(yùn)動(dòng)控制系統(tǒng)普遍采用運(yùn)動(dòng)控制器加 伺服驅(qū)動(dòng)器的分布式控制方式。在這種控制方式中,控制器一方面完成人機(jī)交互,另 一方面進(jìn)行 NC 代碼的解釋執(zhí)行,插補(bǔ)運(yùn)算,繼而將計(jì)算出來的位置指令通過軸組模 塊下發(fā)給各個(gè)伺服驅(qū)動(dòng)器。下

    2024年02月14日
    瀏覽(27)
  • 基于 RK3399+fpga 的 VME 總線控制器設(shè)計(jì)(一)總體設(shè)計(jì)

    基于 RK3399+fpga 的 VME 總線控制器設(shè)計(jì)(一)總體設(shè)計(jì)

    2.1 需求分析及技術(shù)指標(biāo) 2.1.1 需求分析 VME 總線控制器需要實(shí)現(xiàn)數(shù)據(jù)傳輸、中斷處理、測(cè)量顯示等功能。同時(shí)還需 要具有操作系統(tǒng)、底層驅(qū)動(dòng)程序以及功能接口等,以方便用戶進(jìn)行上層應(yīng)用軟件開 發(fā)及使用。 本課題需要實(shí)現(xiàn) VME 控制器的國(guó)產(chǎn)化開發(fā),因此需要選擇一款國(guó)產(chǎn)處

    2024年02月14日
    瀏覽(26)
  • 基于FPGA的4x4矩陣鍵盤控制器verilog開發(fā)實(shí)現(xiàn)

    基于FPGA的4x4矩陣鍵盤控制器verilog開發(fā)實(shí)現(xiàn)

    歡迎訂閱《FPGA學(xué)習(xí)入門100例教程》、《MATLAB學(xué)習(xí)入門100例教程》 目錄 一、理論基礎(chǔ) 二、核心程序 三、測(cè)試結(jié)果 ? ? ? ?基于FPGA的4x4矩陣鍵盤控制器是一種使用FPGA(現(xiàn)場(chǎng)可編程門陣列)來實(shí)現(xiàn)對(duì)4x4矩陣鍵盤進(jìn)行控制的設(shè)備。該控制器能夠有效地降低硬件資源的使用,提高系

    2024年02月11日
    瀏覽(21)
  • 基于 RK3399+fpga 的 VME 總線控制器設(shè)計(jì)(二)硬件和FPGA邏輯設(shè)計(jì)

    基于 RK3399+fpga 的 VME 總線控制器設(shè)計(jì)(二)硬件和FPGA邏輯設(shè)計(jì)

    3.2 FPGA 最小系統(tǒng)設(shè)計(jì) FPGA 最小系統(tǒng)是指可以使 FPGA 正常工作的最基本的系統(tǒng),主要包括電源電 路、配置電路、時(shí)鐘和復(fù)位電路。本次設(shè)計(jì)使用的 FPGA 為紫光同創(chuàng)的 PG2L100H, 接下來具體介紹 FPGA 最小系統(tǒng)各個(gè)部分的電路設(shè)計(jì)。 ( 1 )電源電路設(shè)計(jì) FPGA 所需要的電源電壓有 3.3V

    2024年02月12日
    瀏覽(20)
  • 基于 STM32+FPGA 的通用工業(yè)控制器設(shè)計(jì)(一)系統(tǒng)方案設(shè)計(jì)

    基于 STM32+FPGA 的通用工業(yè)控制器設(shè)計(jì)(一)系統(tǒng)方案設(shè)計(jì)

    本章首先介紹了現(xiàn)有 PLC 系統(tǒng)的概況,然后提出了本文設(shè)計(jì)的通用工業(yè)控制器的 整體方案架構(gòu),分析了硬件和軟件上需要實(shí)現(xiàn)的功能,最后對(duì)各部分功能進(jìn)行分析并提 出具體的實(shí)現(xiàn)方案。 2.1 PLC 系統(tǒng)簡(jiǎn)介 可編程邏輯控制器( Programmable Logic Controller , PLC )是以微處理器為基

    2024年02月15日
    瀏覽(96)
  • 基于FPGA的I2C接口控制器(包含單字節(jié)和多字節(jié)讀寫)

    基于FPGA的I2C接口控制器(包含單字節(jié)和多字節(jié)讀寫)

    ??前文對(duì)IIC的時(shí)序做了詳細(xì)的講解,還有不懂的可以獲取TI的IIC數(shù)據(jù)手冊(cè)查看原理。通過手冊(cè)需要知道的是IIC讀、寫數(shù)據(jù)都是以字節(jié)為單位,每次操作后接收方都需要進(jìn)行應(yīng)答。主機(jī)向從機(jī)寫入數(shù)據(jù)后,從機(jī)接收數(shù)據(jù),需要把總線拉低來告知主機(jī),前面發(fā)送的數(shù)據(jù)已經(jīng)被接

    2024年02月19日
    瀏覽(21)
  • 基于EDA的電烤箱控制器設(shè)計(jì)Verilog代碼Quartus 新起點(diǎn)FPGA開發(fā)板

    基于EDA的電烤箱控制器設(shè)計(jì)Verilog代碼Quartus 新起點(diǎn)FPGA開發(fā)板

    名稱:基于EDA的電烤箱控制器設(shè)計(jì)Verilog代碼Quartus? 新起點(diǎn)FPGA開發(fā)板(文末獲?。?軟件:Quartus 語言:Verilog 代碼功能: 基于EDA的電烤箱控制器設(shè)計(jì) 主要研究?jī)?nèi)容 設(shè)計(jì)一個(gè)電烤箱控制器電路,要求具有三檔加熱功能,分別表示燒烤加熱為低火、中火、高火。具有復(fù)位開關(guān)、啟動(dòng)

    2024年02月01日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包