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

【FPGA】多功能ALU

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

目錄

一、實(shí)驗(yàn)要求

二、源代碼

1. 頂層模塊

2. 數(shù)據(jù)輸入模塊

3. ALU運(yùn)算模塊

4. 結(jié)果處理模塊

5. 掃描數(shù)碼管模塊

5.1 掃描數(shù)碼管頂層

5.2 分頻器

5.3 數(shù)碼管顯示

三、仿真代碼

四、結(jié)構(gòu)層圖

五、管腳配置


實(shí)驗(yàn)板卡:xc7a100tlc sg324-2L,共20個(gè)開關(guān)

一、實(shí)驗(yàn)要求

通過高低位控制,實(shí)現(xiàn)32位數(shù)據(jù)A、B及運(yùn)算方式的輸入,通過8個(gè)數(shù)碼管顯示ALU的十六進(jìn)制運(yùn)算結(jié)果, 通過4個(gè)led燈顯示4個(gè)運(yùn)算信號(hào)ZF SF CF OF(判零、符號(hào)、進(jìn)位、判溢)

【FPGA】多功能ALU

二、源代碼

1. 頂層模塊

`timescale 1ns / 1ps

module TOP(
    input CLK_100M,
    input[15:0] in_data,
    input ctrl_in,
    input rst_,
    input CLK_A,
    input CLK_B,
    input CLK_OP,
    input ShowA,
    input ShowB,
    output[7:0] AN,
    output[7:0] SEG,
    output[3:0] out_flags
    );
    
    wire[31:0] a;
    wire[31:0] b;
    wire[31:0] res;
    wire[31:0] alu_f;
    wire[3:0] in_flags;
    reg[31:0] out_data;
    
    DataInput A(in_data, ctrl_in, CLK_A, rst_, a);
    DataInput B(in_data, ctrl_in, CLK_B, rst_, b);  //數(shù)據(jù)輸入
    ALU alu(a, b, in_data[3:0], res, in_flags);
    ALU_F f(res, in_flags, CLK_OP, rst_, alu_f, out_flags);
    LED led(CLK_100M, rst_, out_data, AN, SEG);
    
    
    always@(ShowA or ShowB)
    begin
        if(!ShowA)
            out_data = a;
        else if(!ShowB)
            out_data = b;
        else
            out_data = alu_f;
    end
    
endmodule

2. 數(shù)據(jù)輸入模塊

`timescale 1ns / 1ps

module DataInput(
    input[15:0] data_in,
    input ctrl_in,
    input clk,
    input rst_,
    output reg[31:0] data_out
    );
    
    always@(negedge clk or negedge rst_)
    begin
        if(!rst_)
            data_out <= 32'b0;
        else
        begin
            if(ctrl_in == 1'b0)
                data_out[15:0] <= data_in;
            else
                data_out[31:16] <= data_in;
        end
    end
    
endmodule

3. ALU運(yùn)算模塊

`timescale 1ns / 1ps

module ALU(
    input[31:0] a,
    input[31:0] b,
    input[31:0] op,
    output reg[32:0] res,
    output reg[3:0] flags
    );
    // flags: ZF    SF    CF   OF (高位->低位)
    //        判零  符號(hào)  進(jìn)位  判溢
    
    always@(*)
    begin
        case(op)
            4'b0000:
            begin
                res <= a + b;
                flags[1] = res[32];
                flags[0] = a[31] ^ b[31] ^ res[31] ^ res[32];
            end
            4'b0001: res <= a << b;
            4'b0010: res <= ($signed(a) < $signed(b)) ? 1 : 0;
            4'b0011: res <= (a < b) ? 1 : 0;
            4'b0100: res <= a ^ b;
            4'b0101: res <= a >> b;
            4'b0110: res <= a | b;
            4'b0111: res <= a & b;
            4'b1000:
            begin
                res <= a - b;
                flags[1] = res[32];
                flags[0] = a[31] ^ b[31] ^ res[31] ^ res[32];
            end
            4'b1001: res <= $signed(a) >>> b;
        endcase
        flags[3] = (res == 32'd0) ? 1 : 0;
        flags[2] = res[31];
    end

endmodule

4. 結(jié)果處理模塊

`timescale 1ns / 1ps

module ALU_F(
    input[32:0] res,
    input[3:0] in_flags,
    input clk,
    input rst_,
    output reg[32:0] alu_f,
    output reg[3:0] out_flags
    );
    
    always@(negedge clk or negedge rst_)
    begin
        if(!rst_)
            begin
                alu_f <= 32'b0;
                out_flags <= 4'b1000;
            end
        else if(clk)
            begin
                alu_f <= res;
                out_flags <= in_flags;
            end
    end
    
endmodule

5. 掃描數(shù)碼管模塊

5.1 掃描數(shù)碼管頂層

`timescale 1ns / 1ps

module LED(
    input clk_100M,
    input rst_,
    input[31:0] data,
    output[7:0] AN,
    output[7:0] SEG
);
    wire clk_ref; //數(shù)碼管刷新頻率:500hz
    wire clk_inc; //數(shù)字刷新頻率:10hz
     
    Fdiv fdiv(clk_100M,32'd100000,clk_ref);
    Scanner scanner(data,rst_,clk_ref,AN,SEG);
endmodule

5.2 分頻器

`timescale 1ns / 1ps

module Fdiv(
    input clk_in,
    input [31:0] count,
    output reg clk_out
    );
    reg[31:0] num;
    
    always@(posedge clk_in)
    begin
        if(num == count)
            begin
                clk_out <= ~clk_out;
                num <= 1'b0;
            end
        else
            num <= num + 1'b1;
    end
    
endmodule

5.3 數(shù)碼管顯示

`timescale 1ns / 1ps

module Scanner(
    input[31:0] data,
    input rst_,
    input clk_ref,
    output reg[7:0] AN,
    output reg[7:0] SEG
    );
reg[3:0] data_x;
reg[2:0] bit;

always@(negedge rst_ or posedge clk_ref)
begin
    if(!rst_)
        bit <= 3'd0;
    else
        bit <= bit + 1'b1;
end

always@(*)
    begin
        case(bit)
            3'b000: begin AN <= 8'b1111_1110; data_x <= data[3:0]; end
            3'b001: begin AN <= 8'b1111_1101; data_x <= data[7:4]; end
            3'b010: begin AN <= 8'b1111_1011; data_x <= data[11:8]; end
            3'b011: begin AN <= 8'b1111_0111; data_x <= data[15:12]; end
            3'b100: begin AN <= 8'b1110_1111; data_x <= data[19:16]; end
            3'b101: begin AN <= 8'b1101_1111; data_x <= data[23:20]; end
            3'b110: begin AN <= 8'b1011_1111; data_x <= data[27:24]; end
            3'b111: begin AN <= 8'b0111_1111; data_x <= data[31:28]; end
         endcase
         
         case(data_x)
            4'b0000: SEG <= 8'b0000_0011;
            4'b0001: SEG <= 8'b1001_1111;
            4'b0010: SEG <= 8'b0010_0101;
            4'b0011: SEG <= 8'b0000_1101;  
            4'b0100: SEG <= 8'b1001_1001;
            4'b0101: SEG <= 8'b0100_1001;
            4'b0110: SEG <= 8'b0100_0001;
            4'b0111: SEG <= 8'b0001_1111;
            4'b1000: SEG <= 8'b0000_0001;
            4'b1001: SEG <= 8'b0000_1001;
            4'b1010: SEG <= 8'b0001_0001;
            4'b1011: SEG <= 8'b1100_0001;
            4'b1100: SEG <= 8'b0110_0011;
            4'b1101: SEG <= 8'b1000_0101;
            4'b1110: SEG <= 8'b0110_0001;
            4'b1111: SEG <= 8'b0111_0001;
        endcase
     end
endmodule

三、仿真代碼

`timescale 1ns / 1ps

module ALU_top_sim();
    reg[31:0] a;
    reg[31:0] b;
    reg[3:0] op;
    wire[32:0] res;
    wire[3:0] flags; //順序:ZF、SF、CF、OF

initial
        begin
            a = 32'h8000_0003;
            b = 32'h0000_0001;
    
            #100
            op = 4'b0000;   //加法
           
            #100
            op = 4'b0001;   //邏輯左移
            
            #100
            op = 4'b0010;   //有符號(hào)數(shù)比較          

            #100
            op = 4'b0011;   //無(wú)符號(hào)數(shù)比較            

            #100
            op = 4'b0100;   //異或
            
            #100
            op = 4'b0101;   //邏輯右移
            
            #100
            op = 4'b0110;   //按位或
            
            #100
            op = 4'b0111;   //按位與
           
            #100
            op = 4'b1000;   //減法
            
            #100
            op = 4'b1001;   //算術(shù)右移
        end    
    ALU alu_sim(a,b,op,res,flags);

endmodule

【FPGA】多功能ALU

四、結(jié)構(gòu)層圖

【FPGA】多功能ALU文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-433176.html

五、管腳配置

set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN E3} [get_ports CLK_100M]

set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN V5} [get_ports in_data[15]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN T4} [get_ports in_data[14]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN V6} [get_ports in_data[13]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN T5} [get_ports in_data[12]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN T6} [get_ports in_data[11]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN V7} [get_ports in_data[10]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN R8} [get_ports in_data[9]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN U9} [get_ports in_data[8]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN T9} [get_ports in_data[7]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN V10} [get_ports in_data[6]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN R10} [get_ports in_data[5]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN U11} [get_ports in_data[4]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN R11} [get_ports in_data[3]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN U12} [get_ports in_data[2]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN T13} [get_ports in_data[1]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN V14} [get_ports in_data[0]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN T14} [get_ports ctrl_in]

set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets rst_]
set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets CLK_A]
set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets CLK_B]
set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets CLK_OP]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN N17} [get_ports rst_]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN P18} [get_ports CLK_A]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN P17} [get_ports CLK_B]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN R18} [get_ports CLK_OP]

set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets ShowA]
set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets ShowB]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN U18} [get_ports ShowA]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN U17} [get_ports ShowB]

set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN U6} [get_ports out_flags[3]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN R5} [get_ports out_flags[2]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN U7} [get_ports out_flags[1]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN R6} [get_ports out_flags[0]]

set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN C9} [get_ports AN[7]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN C10} [get_ports AN[6]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN D10} [get_ports AN[5]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN C11} [get_ports AN[4]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN M17} [get_ports AN[3]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN J14} [get_ports AN[2]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN K13} [get_ports AN[1]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN P14} [get_ports AN[0]]

set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN F14} [get_ports SEG[7]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN N14} [get_ports SEG[6]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN J13} [get_ports SEG[5]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN G13} [get_ports SEG[4]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN F13} [get_ports SEG[3]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN G14} [get_ports SEG[2]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN M13} [get_ports SEG[1]]
set_property -dict {IOSTANDARD LVCMOS18 PACKAGE_PIN H14} [get_ports SEG[0]]

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

本文來(lái)自互聯(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的多功能信號(hào)模擬生成系統(tǒng)

    基于FPGA的多功能信號(hào)模擬生成系統(tǒng)

    本系統(tǒng)歷時(shí)1.5年開發(fā),在實(shí)際應(yīng)用過程中,功能再不斷更新完善中。。。。 系統(tǒng)工程源碼: 百度網(wǎng)盤? ? 提取碼:mww7 模擬器設(shè)備發(fā)射端主要由中頻處理單元和射頻發(fā)送單元兩部分組成。功能組成框圖如圖所示,中頻處理單元實(shí)現(xiàn)擬輻射信號(hào)的基帶數(shù)字信號(hào)產(chǎn)生、D/A轉(zhuǎn)換和中

    2024年02月19日
    瀏覽(24)
  • 基于FPGA的多功能數(shù)字時(shí)鐘設(shè)計(jì)報(bào)告

    基于FPGA的多功能數(shù)字時(shí)鐘設(shè)計(jì)報(bào)告

    作品基于intel Cyclone IV E EP4CE10F17C8 FPGA板卡,主要開發(fā)環(huán)境為Quartus Ⅱ,編程并實(shí)現(xiàn)了多功能溫濕度電子鐘。本作品在實(shí)現(xiàn)顯示實(shí)時(shí)時(shí)間的基礎(chǔ)上,設(shè)計(jì)并完成了設(shè)置鬧鐘、改變鬧鐘鈴聲、顯示實(shí)時(shí)溫度和實(shí)時(shí)濕度、基于以太網(wǎng)通信協(xié)議的實(shí)時(shí)視頻傳輸?shù)裙δ?。在未設(shè)置鬧鐘時(shí)

    2024年02月05日
    瀏覽(26)
  • FPGA實(shí)現(xiàn)10M多功能信號(hào)發(fā)生器

    FPGA實(shí)現(xiàn)10M多功能信號(hào)發(fā)生器

    方案一:采用模擬鎖相環(huán)實(shí)現(xiàn)。模擬鎖相環(huán)技術(shù)是一項(xiàng)比較成熟的技術(shù)。應(yīng)用模擬鎖相環(huán),可將基準(zhǔn)頻率倍頻,或分頻得到所需的頻率,且調(diào)節(jié)精度可以做到相當(dāng)高、穩(wěn)定性也比較好。但模擬鎖相環(huán)模擬電路復(fù)雜,不易調(diào)節(jié),成本較高,并且頻率調(diào)節(jié)不便且調(diào)節(jié)范圍小,輸出

    2023年04月09日
    瀏覽(15)
  • 基于FPGA的多功能數(shù)字鐘的設(shè)計(jì)

    摘要 數(shù)字鐘是采用數(shù)字電路實(shí)現(xiàn)對(duì)時(shí)、分、秒數(shù)字顯示的計(jì)時(shí)裝置,是人們?nèi)粘?生活中不可少的必需品。本文介紹了應(yīng)用FPGA芯片設(shè)計(jì)多功能數(shù)字鐘的?種方 案,并討討論了有關(guān)使用FPGA芯片和VHDL語(yǔ)言實(shí)現(xiàn)數(shù)字鐘設(shè)計(jì)的技術(shù)問題。 數(shù)字鐘、分頻器、譯碼器、計(jì)數(shù)器、校

    2024年02月07日
    瀏覽(33)
  • 數(shù)字系統(tǒng)設(shè)計(jì)(FPGA)課程設(shè)計(jì): 多功能數(shù)字鐘

    數(shù)字系統(tǒng)設(shè)計(jì)(FPGA)課程設(shè)計(jì): 多功能數(shù)字鐘

    一、目的: 實(shí)現(xiàn)多功能數(shù)字鐘,具備下列功能: 1、數(shù)字鐘:能計(jì)時(shí),實(shí)現(xiàn)小時(shí)、分鐘、秒的顯示; 2、數(shù)字跑表:精度至0.01秒 比如顯示12.97秒; 3、鬧鐘: 可以設(shè)定鬧鐘,用試驗(yàn)箱上的蜂鳴器作為鬧鈴; 4、調(diào)時(shí):可以對(duì)時(shí)間進(jìn)行設(shè)定; 5、日期設(shè)定:能設(shè)定日期并顯示當(dāng)前

    2023年04月18日
    瀏覽(27)
  • 0—基于FPGA(ZYNQ-Z2)的多功能小車

    0—基于FPGA(ZYNQ-Z2)的多功能小車

    ? ?在電子技術(shù)與創(chuàng)新的課設(shè)中我選擇了這個(gè)題目,在設(shè)計(jì)的時(shí)候遇到了非常多的問題,但是網(wǎng)上的對(duì)應(yīng)資料又非常少,因此在完成設(shè)計(jì)之后,我把設(shè)計(jì)方法與代碼在這篇博客中分享出來(lái),希望能對(duì)需要的人有所幫助。 目錄 1.題目 2. 題目分析: 3. 器件使用 4. 工程文件? 5. 傳

    2024年02月07日
    瀏覽(24)
  • 基于高云FPGA開發(fā)板的多功能數(shù)字時(shí)鐘

    基于高云FPGA開發(fā)板的多功能數(shù)字時(shí)鐘

    目錄 一、數(shù)字時(shí)鐘作品的功能 二、數(shù)字時(shí)鐘作品的主體設(shè)計(jì)原理和功能說明 三、數(shù)字時(shí)鐘的各設(shè)計(jì)模塊說明及模塊程序代碼 1) 時(shí)鐘分頻模塊time_div、freq_div 2)按鍵消抖模塊key_db 3)控制模塊control 4)時(shí)間正常計(jì)數(shù)模塊time_count 5)時(shí)間設(shè)置模塊time_set 6)時(shí)間動(dòng)態(tài)掃描位選模塊time_d

    2024年01月22日
    瀏覽(27)
  • 5—基于FPGA(ZYNQ-Z2)的多功能小車—軟件設(shè)計(jì)—藍(lán)牙串口

    5—基于FPGA(ZYNQ-Z2)的多功能小車—軟件設(shè)計(jì)—藍(lán)牙串口

    目錄 1.藍(lán)牙模塊介紹 2.UART介紹 3.Verilog代碼: 3.1Uart_RX模塊: 3.2 分頻模塊: 3.3 Uart驅(qū)動(dòng)模塊 3.4 Uart控制模塊 4. 總覽 ? 我使用的是JDY-31藍(lán)牙模塊,在連線中,要注意RX-TX,TX-RX。 ? 即FPGA約束的TX對(duì)應(yīng)藍(lán)牙模塊的RX,約束的RX對(duì)應(yīng)藍(lán)牙模塊的TX。 藍(lán)牙模塊使用UART串口通信協(xié)議,具體

    2024年02月05日
    瀏覽(32)
  • 微信小程序 - 超詳細(xì)小程序接入騰訊地圖的完整流程,提供地圖顯示、IP 屬地定位、地理位置名稱、獲取經(jīng)緯度等超多功能示例(可一鍵復(fù)制并運(yùn)行的功能源代碼,詳細(xì)的注釋及常見問題匯總)小白直接上手!

    微信小程序 - 超詳細(xì)小程序接入騰訊地圖的完整流程,提供地圖顯示、IP 屬地定位、地理位置名稱、獲取經(jīng)緯度等超多功能示例(可一鍵復(fù)制并運(yùn)行的功能源代碼,詳細(xì)的注釋及常見問題匯總)小白直接上手!

    網(wǎng)上的教程代碼太亂了,第一次接觸的朋友極其難搞,更別說把功能改造移植到自己的項(xiàng)目中去。 本文站在小白的角度, 實(shí)現(xiàn)了微信小程序開發(fā)中,集成騰訊地圖的詳細(xì)流程及使用方法教程,提供了地圖顯示、IP 屬地定位、當(dāng)前定位的地理位置名稱、當(dāng)前定位的經(jīng)緯度等等

    2024年02月16日
    瀏覽(23)
  • FPGA多功能數(shù)字時(shí)鐘 基于Quartus實(shí)現(xiàn)設(shè)計(jì)與仿真 華南師范大學(xué)數(shù)電綜設(shè)

    FPGA多功能數(shù)字時(shí)鐘 基于Quartus實(shí)現(xiàn)設(shè)計(jì)與仿真 華南師范大學(xué)數(shù)電綜設(shè)

    專業(yè): 通信工程 學(xué)號(hào):__ 姓名: 龔易乾___指導(dǎo)老師: 電子與信息工程學(xué)院 2023年2月 有任何疑問可以聯(lián)系郵箱:codealan@qq.com 項(xiàng)目倉(cāng)庫(kù)地址:https://github.com/CodeAlanqian/e-clock github倉(cāng)庫(kù)地址 熟練掌握Quartus等EDA設(shè)計(jì)與仿真工具,掌握多路選擇器、N進(jìn)制計(jì)數(shù)器、顯示譯碼電路、開關(guān)

    2024年02月12日
    瀏覽(38)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包