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

基于FPGA 以太網(wǎng)gmii_to_rgmii模塊編寫 附源碼

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

筆者使用的開發(fā)板是米聯(lián)客zynq UitraScale+ xczu4ev-sfvc784-2-i開發(fā)板進(jìn)行測(cè)試

由于米聯(lián)客協(xié)議族源碼不開源,自己寫了一個(gè)簡(jiǎn)易的以太網(wǎng)接口轉(zhuǎn)換模塊只支持1000M速率。

一、接口框圖:(引用原子哥)

基于FPGA 以太網(wǎng)gmii_to_rgmii模塊編寫 附源碼

二、RGMII接口時(shí)序簡(jiǎn)介:

(1)接收時(shí)序(PHY>FPGA)

RXC 的上下邊沿與 RXD 和 RX_CTL 信號(hào)對(duì)齊,相位相同。(非延時(shí)模式)

基于FPGA 以太網(wǎng)gmii_to_rgmii模塊編寫 附源碼

RXC 的上下邊沿與 RXD 和 RX_CTL 信號(hào)的中間位置對(duì)齊,相位相差90度(延時(shí)模式)

RXC 的時(shí)鐘周期為 8ns,單個(gè)高電平或者低電平為 4ns, RXC 相對(duì)于 RXD 和 RX_CTL 延時(shí)約 2ns。

基于FPGA 以太網(wǎng)gmii_to_rgmii模塊編寫 附源碼

(2)發(fā)送時(shí)序(FPGA>PHY)

TXC 的上下邊沿與 TXD 和 TX_CTL 信號(hào)對(duì)齊,相位相同。 (非延時(shí)模式)

基于FPGA 以太網(wǎng)gmii_to_rgmii模塊編寫 附源碼

RGMII 發(fā)送端口在 TXC 時(shí)鐘的上升沿傳輸 TXD 的低 4 位和 TX_CTL 的使能信號(hào);

下降沿傳輸 TXD 的高 4 位和 TX_CTL 的錯(cuò)誤信號(hào)(實(shí)際上是使能信號(hào)和錯(cuò)誤信號(hào)的異或值); RGMII 接收端口在RXC 時(shí)鐘的上升沿傳輸 RXD 的低 4 位和 RX_CTL 的使能信號(hào);

下降沿傳輸RXD 的高 4 位和RX_CTL 的錯(cuò)誤信號(hào)(實(shí)際上是使能信號(hào)和錯(cuò)誤信號(hào)的異或值)。(延時(shí)模式)

基于FPGA 以太網(wǎng)gmii_to_rgmii模塊編寫 附源碼
注意:筆者芯片接收時(shí)序?yàn)檠訒r(shí)模式,發(fā)送時(shí)序?yàn)檎DJ?,具體模式需參考相應(yīng)原理圖引腳上下拉判斷,也可通過MDIO配置。

三、原語使用

UitraScale+系列的開發(fā)板原語使用和7系列大不相同,需要了解IDDRE1、ODDRE1、BUFG、BUFIO、IDELAYE3 、 ODELAYE3。在本次測(cè)試中并未使用IDELAYE3 、 ODELAYE3不做研究,原因是其phy芯片rxd端采用延時(shí)模式txd采用非延時(shí)模式(輸出我們采用pll的方法相位偏移90度)。

//全局緩沖, BUFG 的輸出到達(dá) FPGA 內(nèi)部的 IOB、 CLB、塊 RAM 的時(shí)鐘延遲和抖動(dòng)最小。
BUFG BUFG_inst (
  .I            (rgmii_rxc),     // 1-bit input: Clock input
  .O            (rgmii_clk_buf) // 1-bit output: Clock output
);
//BUFIO 是 IO 時(shí)鐘網(wǎng)絡(luò),其獨(dú)立于全局時(shí)鐘資源,適合采集源同步數(shù)據(jù)。它只能驅(qū)動(dòng) IO Block 里面的邏輯,不能驅(qū)動(dòng)  CLB 里面的 LUT, REG 等邏輯。
BUFIO BUFIO_inst (
  .I            (rgmii_rxc),      // 1-bit input: Clock input
  .O            (rgmii_rxc_bufio) // 1-bit output: Clock output
);
//將輸入的上下邊沿 DDR 信號(hào),轉(zhuǎn)換成兩位單邊沿 SDR 信號(hào)。 
IDDRE1 #(
    .DDR_CLK_EDGE("SAME_EDGE_PIPELINED"), // IDDRE1 mode (OPPOSITE_EDGE, SAME_EDGE, SAME_EDGE_PIPELINED)模式選擇一般選擇SAME_EDGE_PIPELINED模式
    .IS_CB_INVERTED(1'b1),          // Optional inversion for CB,高速時(shí)鐘CB反向使能
    .IS_C_INVERTED(1'b0)            // Optional inversion for C,高速時(shí)鐘C反向不使能
 )
 IDDRE1_inst (
    .Q1(w_gmii_rx_dv), // 1-bit output: Registered parallel output 1輸出低4位
    .Q2(w_rgmii_rx_ctl), // 1-bit output: Registered parallel output 2輸出高4位
    .C(rgmii_rxc_bufio),   // 1-bit input: High-speed clock高速時(shí)鐘輸入
    .CB(rgmii_rxc_bufio), // 1-bit input: Inversion of High-speed clock C高速時(shí)鐘c的反轉(zhuǎn)
與這個(gè)IS_CB_INVERTED參數(shù)互斥
    .D(rgmii_rx_ctl),   // 1-bit input: Serial Data Input8位數(shù)據(jù)輸入
    .R(1'b0)    // 1-bit input: Active-High Async Reset置位/復(fù)位信號(hào),高有效
 );
//把兩路單端的數(shù)據(jù)合并到一路上輸出,上下沿同時(shí)輸出數(shù)據(jù),上升沿輸出 a路,下降沿輸出 b 路
ODDRE1 #(
    .IS_C_INVERTED     (1'b0                   ),  // Optional inversion for C c的反轉(zhuǎn)
    .IS_D1_INVERTED    (1'b0                   ),  // Unsupported, do not use無用默認(rèn)
    .IS_D2_INVERTED    (1'b0                   ),  // Unsupported, do not use無用默認(rèn)
    .SIM_DEVICE("ULTRASCALE"), // Set the device version (ULTRASCALE, ULTRASCALE_PLUS, ULTRASCALE_PLUS_ES1,設(shè)備版本選擇
    .SRVAL             (1'b0                   )   // Initializes the ODDRE1 Flip-Flops to the specified value (1'b0, 1'b1)初始化ODDRE1觸發(fā)器到指定值(1'bo, 1'b1)
    )
    u_rgmii_tx_ctl 
    (
         .Q                 (rgmii_tx_ctl           ),   // 1-bit output: Data output to IOB 8位數(shù)據(jù)輸出
         .C                 (gmii_tx_clk            ),   // 1-bit input: High-speed clock input高速時(shí)鐘輸入
         .D1                (gmii_tx_en             ), // 1-bit input: Parallel data input 1輸入數(shù)據(jù)低4位
         .D2                (gmii_tx_er             ), // 1-bit input: Parallel data input 2輸入數(shù)據(jù)高4位
         .SR                (0                      )    // 1-bit input: Active High Async Reset置位/復(fù)位信號(hào),高有效
);

四、源碼

代碼寫法有很多筆者也參考了很多廠商dmo有誤請(qǐng)?jiān)谠u(píng)論區(qū)指正

module gmii_rgmii(
    input     wire                    rgmii_rxc        ,//輸入時(shí)鐘
    input     wire    [3:0]           rgmii_rxd        ,//輸入數(shù)據(jù)
    input     wire                    rgmii_rx_ctl     ,//輸入控制

    output    wire    [3:0]           rgmii_txd        ,//輸出數(shù)據(jù)
    output    wire                    rgmii_tx_ctl     ,//輸出控制
    output    wire                    rgmii_txc        ,//發(fā)送時(shí)鐘

    output    wire                    gmii_rx_clk      ,//輸出接收時(shí)鐘
    output    wire     [7:0]          gmii_rxd         ,//輸入8位數(shù)據(jù)
    output    wire                    gmii_rx_dv       ,//輸出數(shù)據(jù)有效

    input     wire    [7:0]           gmii_txd         ,//輸入8位數(shù)據(jù)
    input     wire                    gmii_tx_en       ,//輸入發(fā)送使能高有效
    input     wire                    gmii_tx_er       ,//輸入數(shù)據(jù)是否有誤高有效
    output    wire                    gmii_tx_clk       //輸出發(fā)送時(shí)鐘
 );
 
     wire                     w_gmii_rx_dv   ;
     wire                     w_rgmii_rx_ctl ;
     wire                     rgmii_rxc_bufio;
     wire                     rgmii_clk_buf  ;

 /*              Rgmii rx                  */
 

BUFG BUFG_inst (
  .I            (rgmii_rxc),     // 1-bit input: Clock input
  .O            (rgmii_clk_buf) // 1-bit output: Clock output
);

BUFIO BUFIO_inst (
  .I            (rgmii_rxc),      // 1-bit input: Clock input
  .O            (rgmii_rxc_bufio) // 1-bit output: Clock output
);
assign gmii_rx_clk = rgmii_clk_buf;
assign gmii_tx_clk = rgmii_clk_buf;
assign gmii_rx_dv  = (w_gmii_rx_dv & w_rgmii_rx_ctl);

IDDRE1 #(
    .DDR_CLK_EDGE("SAME_EDGE_PIPELINED"), // IDDRE1 mode (OPPOSITE_EDGE, SAME_EDGE, SAME_EDGE_PIPELINED)
    .IS_CB_INVERTED(1'b1),          // Optional inversion for CB
    .IS_C_INVERTED(1'b0)            // Optional inversion for C
 )
 IDDRE1_inst (
    .Q1(w_gmii_rx_dv), // 1-bit output: Registered parallel output 1
    .Q2(w_rgmii_rx_ctl), // 1-bit output: Registered parallel output 2
    .C(rgmii_rxc_bufio),   // 1-bit input: High-speed clock
    .CB(rgmii_rxc_bufio), // 1-bit input: Inversion of High-speed clock C
    .D(rgmii_rx_ctl),   // 1-bit input: Serial Data Input
    .R(1'b0)    // 1-bit input: Active-High Async Reset
 );

genvar i;
generate
    for (i = 0; i < 4; i = i + 1) 
    begin : rxdata_bus
        IDDRE1 #(
            .DDR_CLK_EDGE     ("SAME_EDGE_PIPELINED"   ),  // IDDRE1 mode (OPPOSITE_EDGE, SAME_EDGE, SAME_EDGE_PIPELINED)
            .IS_CB_INVERTED   (1'b1                    ),  // Optional inversion for CB
            .IS_C_INVERTED    (1'b0                    )   // Optional inversion for C
        )
        u_rgmii_rxd
        (
            .Q1               (gmii_rxd[i]             ),  // 1-bit output: Registered parallel output 1
            .Q2               (gmii_rxd[i+4]           ),  // 1-bit output: Registered parallel output 2
            .C                (rgmii_rxc_bufio         ),  // 1-bit input: High-speed clock
            .CB               (rgmii_rxc_bufio         ),  // 1-bit input: Inversion of High-speed clock C
            .D                (rgmii_rxd[i]            ),  // 1-bit input: Serial Data Input
            .R                (0                       )   // 1-bit input: Active High Async Reset
        );
    end
 endgenerate
   
 /*                         Rgmii tx                        */
 
assign rgmii_txc=gmii_tx_clk;

ODDRE1 #(
    .IS_C_INVERTED     (1'b0                   ),  // Optional inversion for C
    .IS_D1_INVERTED    (1'b0                   ),  // Unsupported, do not use
    .IS_D2_INVERTED    (1'b0                   ),  // Unsupported, do not use
    .SIM_DEVICE("ULTRASCALE"), // Set the device version (ULTRASCALE, ULTRASCALE_PLUS, ULTRASCALE_PLUS_ES1,
    .SRVAL             (1'b0                   )   // Initializes the ODDRE1 Flip-Flops to the specified value (1'b0, 1'b1)
    )
    u_rgmii_tx_ctl 
    (
         .Q                 (rgmii_tx_ctl           ),   // 1-bit output: Data output to IOB
         .C                 (gmii_tx_clk            ),   // 1-bit input: High-speed clock input
         .D1                (gmii_tx_en             ),   // 1-bit input: Parallel data input 1
         .D2                (gmii_tx_er             ),   // 1-bit input: Parallel data input 2
         .SR                (0                      )    // 1-bit input: Active High Async Reset
);
    
genvar j;
generate
    for (j = 0; j < 4; j = j + 1)
     begin: txdata_bus
        ODDRE1 #(
            .IS_C_INVERTED     (1'b0                   ),  // Optional inversion for C
            .IS_D1_INVERTED    (1'b0                   ),  // Unsupported, do not use
            .IS_D2_INVERTED    (1'b0                   ),  // Unsupported, do not use
            .SIM_DEVICE("ULTRASCALE"), // Set the device version (ULTRASCALE, ULTRASCALE_PLUS, ULTRASCALE_PLUS_ES1,
            .SRVAL             (1'b0                   )   // Initializes the ODDRE1 Flip-Flops to the specified value (1'b0, 1'b1)
        )
        u_rgmii_txd
        (
            .Q                 (rgmii_txd[j]           ),  // 1-bit output: Data output to IOB
            .C                 (gmii_tx_clk            ),  // 1-bit input: High-speed clock input
            .D1                (gmii_txd[j]            ),  // 1-bit input: Parallel data input 1
            .D2                (gmii_txd[4+j]          ),  // 1-bit input: Parallel data input 2
            .SR                (0                      )   // 1-bit input: Active High Async Reset
        );
    end
endgenerate
   
endmodule

pll資源配置:

基于FPGA 以太網(wǎng)gmii_to_rgmii模塊編寫 附源碼
基于FPGA 以太網(wǎng)gmii_to_rgmii模塊編寫 附源碼

頂層例化使用

//MMCM/PLL偏移90度
clk_wiz_0 u_clk_wiz(
  // Clock out ports
  .clk_out1   (clk_125m_deg),       // output clk_out1
  // Status and control signals
  //.reset      (~sys_rst_n  ),       // input reset
  .locked     (locked      ),       // output locked
 // Clock in ports
  .clk_in1    (rgmii_txc   )        // input clk_in1
  );  

五、仿真

有點(diǎn)亂碼不影響查看

`timescale 1ns / 1ps
module gmii_rgmii_tb();
    reg                         rgmii_rxc        ;//閹恒儲(chǔ)鏁歸弮鍫曟??
    reg                         clk             ;//婢跺秳錕??
    wire       [3:0]            rgmii_txd        ;//閸欐埊錕???閿熻姤鏆熼敓??
    wire                        rgmii_tx_ctl     ;//閺佺増宓??幒褍????
    wire                        rgmii_txc        ;//閸欐埊錕???閿熻姤妞傞敓??
    reg         [3:0]           rgmii_rxd        ;//閹恒儲(chǔ)鏁歸弫鐗堝??
    reg                         rgmii_rx_ctl     ;//閹恒儲(chǔ)鏁歸弫鐗堝祦閹貉冨??
    wire                        gmii_rx_clk      ;//閺佺増宓佺憴锝嗭???錕介幒銉?chǔ)鏁归弮鍫曞K??
    reg         [7:0]           gmii_txd         ;//鏉堟挸鍙嗛弫鐗堝??
    reg                         gmii_tx_en       ;//閺佺増宓佹擔(dān)鑳??
    reg                         gmii_tx_er       ;//閺佺増宓??柨嬈掝嚖
    wire                        gmii_tx_clk      ;//閺佺増宓??崣鎴嫹?閿熻姤妞傞敓??
    wire         [7:0]          gmii_rxd         ;//閹恒儲(chǔ)鏁歸弫鐗堝??
    wire                        gmii_rx_dv       ;//閹恒儲(chǔ)鏁歸弫鐗堝祦閺堝????
 
 initial begin 
     clk=0;
     rgmii_rxc=0;rgmii_rxd=4'd1;gmii_txd=8'b1;
 end
 
 always #8  rgmii_rxc=!rgmii_rxc;
 always #4  clk=!clk;
 initial begin
     rgmii_rx_ctl=1;gmii_tx_en=1'b1;gmii_tx_er=1'b1;
     #100;
 end
 
 always@(posedge rgmii_rxc)begin
     #1
     if(gmii_txd==15)gmii_txd=0;
     else
     gmii_txd=gmii_txd+1'b1;
 end
 
 always@(posedge clk )begin
     #1
     if(rgmii_rxd==40)rgmii_rxd=0;
     else
     rgmii_rxd=rgmii_rxd+1'b1;
 end
 
 gmii_rgmii gmii_rgmii(
    /*input     wire                   */. rgmii_rxc       (rgmii_rxc) ,//閹恒儲(chǔ)鏁歸弮鍫曟??
    /*output    wire    [3:0]          */. rgmii_txd       (rgmii_txd) ,//閸欐埊錕???閿熻姤鏆熼敓??
    /*output    wire                   */. rgmii_tx_ctl    (rgmii_tx_ctl) ,//閺佺増宓??幒褍????
    /*output    wire                   */. rgmii_txc       (rgmii_txc) ,//閸欐埊錕???閿熻姤妞傞敓??
    /*input     wire    [3:0]          */. rgmii_rxd       (rgmii_rxd) ,//閹恒儲(chǔ)鏁歸弫鐗堝??
    /*input     wire                   */. rgmii_rx_ctl    (rgmii_rx_ctl) ,//閹恒儲(chǔ)鏁歸弫鐗堝祦閹貉冨??
 
    /*output    wire                   */. gmii_rx_clk     (gmii_rx_clk) ,//閺佺増宓佺憴锝嗭???錕介幒銉?chǔ)鏁归弮鍫曞K??
    /*input     wire    [7:0]          */. gmii_txd        (gmii_txd) ,//鏉堟挸鍙嗛弫鐗堝??
    /*input     wire                   */. gmii_tx_en      (gmii_tx_en) ,//閺佺増宓佹擔(dān)鑳??
    /*input     wire                   */. gmii_tx_er      (gmii_tx_er) ,//閺佺増宓??柨嬈掝嚖
    /*output    wire                   */. gmii_tx_clk     (gmii_tx_clk) ,//閺佺増宓??崣鎴嫹?閿熻姤妞傞敓??
    /*output    reg     [7:0]          */. gmii_rxd        (gmii_rxd) ,//閹恒儲(chǔ)鏁歸弫鐗堝??
    /*output    reg                    */. gmii_rx_dv      (gmii_rx_dv)  //閹恒儲(chǔ)鏁歸弫鐗堝祦閺堝????
 );
 
 endmodule
 
基于FPGA 以太網(wǎng)gmii_to_rgmii模塊編寫 附源碼

注意:發(fā)送時(shí)鐘并未體現(xiàn)數(shù)據(jù)中間采樣是因?yàn)闀r(shí)鐘輸出采用pll使相位偏移90度在頂層實(shí)現(xiàn)

對(duì)了由于是高速接口需添加時(shí)序約束。時(shí)鐘是由PHY芯片產(chǎn)生的125Mhz時(shí)鐘需要添加引腳輸入的主時(shí)鐘約束到.xdc文件中(注意放在引腳約束前)如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-461206.html

create_clock -period 8.000 -name rgmii_rxc [get_ports rgmii_rxc]

六、板級(jí)驗(yàn)證

基于FPGA 以太網(wǎng)gmii_to_rgmii模塊編寫 附源碼

到了這里,關(guān)于基于FPGA 以太網(wǎng)gmii_to_rgmii模塊編寫 附源碼的文章就介紹完了。如果您還想了解更多內(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)文章

  • 千兆以太網(wǎng)芯片88E1111 RGMII模式的FPGA驅(qū)動(dòng)實(shí)現(xiàn)

    千兆以太網(wǎng)芯片88E1111 RGMII模式的FPGA驅(qū)動(dòng)實(shí)現(xiàn) 在網(wǎng)絡(luò)應(yīng)用領(lǐng)域,千兆以太網(wǎng)已經(jīng)成為主流,而88E1111作為一款先進(jìn)的千兆以太網(wǎng)芯片,其驅(qū)動(dòng)實(shí)現(xiàn)對(duì)于網(wǎng)絡(luò)設(shè)備的性能和穩(wěn)定性有著至關(guān)重要的影響。本文將介紹在RGMII模式下,如何實(shí)現(xiàn)88E1111芯片在FPGA上的驅(qū)動(dòng)。 一、準(zhǔn)備工作

    2024年01月22日
    瀏覽(25)
  • 基于FPGA的以太網(wǎng)相關(guān)文章導(dǎo)航

    基于FPGA的以太網(wǎng)相關(guān)文章導(dǎo)航

    ??首先需要了解以太網(wǎng)的一些接口協(xié)議標(biāo)準(zhǔn),常見的MII、GMII、RGMII時(shí)序,便于后續(xù)開發(fā)。 ????【必讀】從MII到RGMII,一文了解以太網(wǎng)PHY芯片不同傳輸接口信號(hào)時(shí)序! ??介紹一款比較老的以太網(wǎng)PHY芯片88E1518,具有RGMII接口,分析該芯片的原理圖和內(nèi)部寄存器的配置方式

    2024年04月14日
    瀏覽(49)
  • 基于UDP協(xié)議的千兆以太網(wǎng)傳輸(FPGA)

    基于UDP協(xié)議的千兆以太網(wǎng)傳輸(FPGA)

    @[TOC]基于UDP協(xié)議的千兆以太網(wǎng)傳輸(FPGA) UDP協(xié)議是一種基于無連接協(xié)議,即發(fā)送端發(fā)送數(shù)據(jù)無需確認(rèn)接收端是否存在;接收端收到數(shù)據(jù)后也無需給發(fā)送端反饋是否收到,所以UDP在數(shù)據(jù)發(fā)送過程中允許丟失一兩包數(shù)據(jù)。用于對(duì)丟包不嚴(yán)格的場(chǎng)合,比如視頻流,偶有一兩幀的丟

    2024年02月12日
    瀏覽(24)
  • 基于FPGA的以太網(wǎng)傳輸圖片通過HDMI顯示(含源碼)

    基于FPGA的以太網(wǎng)傳輸圖片通過HDMI顯示(含源碼)

    ??在此之前,已經(jīng)講解過HDMI、UDP、DDR3等模塊的使用,前文在使用HDMI顯示圖片時(shí),由于沒有講解DDR3,使用FPGA內(nèi)部的RAM存儲(chǔ)圖像數(shù)據(jù),因?yàn)镕PGA片上RAM的資源有限,導(dǎo)致最終顯示放大的圖片失真嚴(yán)重。 ??本文通過DDR3存儲(chǔ)整張圖片的數(shù)據(jù),然后通過HDMI在顯示器上進(jìn)行顯示,

    2024年03月27日
    瀏覽(78)
  • 基于FPGA的百兆以太網(wǎng)通信(一)——MDIO配置PHY芯片

    基于FPGA的百兆以太網(wǎng)通信(一)——MDIO配置PHY芯片

    ?一、以太網(wǎng)簡(jiǎn)介 ? 之前提了個(gè)引子,接下來我會(huì)分享一下基于FPGA的百兆以太網(wǎng)通信學(xué)習(xí)過程。第一部分是對(duì)于以太網(wǎng)PHY芯片的配置和狀態(tài)讀取。 ? 一般來說,F(xiàn)PGA以太網(wǎng)通信是需要外接的PHY芯片的,目前的很多FPGA出廠的底板上已經(jīng)焊好了PHY芯片,所以這一點(diǎn)是比較方便的。

    2024年04月10日
    瀏覽(21)
  • FPGA以太網(wǎng)入門(一)——MDIO接口讀寫測(cè)試實(shí)驗(yàn)(基于紫光同創(chuàng))

    FPGA以太網(wǎng)入門(一)——MDIO接口讀寫測(cè)試實(shí)驗(yàn)(基于紫光同創(chuàng))

    此篇為專欄《紫光同創(chuàng)FPGA開發(fā)筆記》的第五篇,記錄我的學(xué)習(xí) FPGA 的一些開發(fā)過程和心得感悟,剛接觸 FPGA 的朋友們可以先去此博客 《FPGA零基礎(chǔ)入門學(xué)習(xí)路線》來做最基礎(chǔ)的掃盲。 本篇內(nèi)容基于筆者實(shí)際開發(fā)過程和正點(diǎn)原子資料撰寫,將會(huì)詳細(xì)講解此 FPGA 實(shí)驗(yàn)的全流程,

    2024年04月15日
    瀏覽(35)
  • FPGA以太網(wǎng)入門(二)——ARP測(cè)試實(shí)驗(yàn)(基于紫光同創(chuàng),含原語介紹)

    FPGA以太網(wǎng)入門(二)——ARP測(cè)試實(shí)驗(yàn)(基于紫光同創(chuàng),含原語介紹)

    此篇為專欄《紫光同創(chuàng)FPGA開發(fā)筆記》的 第六篇 ,同時(shí)也是 FPGA 以太網(wǎng)入門 的 第二篇 ,記錄我的學(xué)習(xí) FPGA 的一些開發(fā)過程和心得感悟,剛接觸 FPGA 的朋友們可以先去此博客 《FPGA零基礎(chǔ)入門學(xué)習(xí)路線》來做最基礎(chǔ)的掃盲。 本篇內(nèi)容基于筆者實(shí)際開發(fā)過程和正點(diǎn)原子資料撰寫

    2024年02月20日
    瀏覽(26)
  • FPGA實(shí)現(xiàn)以太網(wǎng)(一)——以太網(wǎng)簡(jiǎn)介

    FPGA實(shí)現(xiàn)以太網(wǎng)(一)——以太網(wǎng)簡(jiǎn)介

    以太網(wǎng)(Ethernet)是當(dāng)今現(xiàn)有局域網(wǎng)采用的最通用的通信協(xié)議標(biāo)準(zhǔn), 該標(biāo)準(zhǔn)定義了在局域網(wǎng)中采用的電纜類型和信號(hào)處理方法。 以太網(wǎng)憑借其成本低、通信速率高、抗干擾性強(qiáng)等優(yōu)點(diǎn)被廣泛應(yīng)用在網(wǎng)絡(luò)遠(yuǎn)程監(jiān)控、 交換機(jī)、工業(yè)自動(dòng)化等對(duì)通信速率要求較高的場(chǎng)合。 以太網(wǎng)是一

    2024年02月03日
    瀏覽(28)
  • 基于FPGA的GMII與RGMII接口相互轉(zhuǎn)換(包含源工程文件)

    基于FPGA的GMII與RGMII接口相互轉(zhuǎn)換(包含源工程文件)

    ??這段時(shí)間通過FPGA把ARP、ICMP、UDP協(xié)議全部通過FPGA實(shí)現(xiàn)了一遍,本來本文打算記錄一下arp協(xié)議的,但在此之前應(yīng)該先解決RGMII接口與GMII接口的轉(zhuǎn)換問題。 ??經(jīng)過前文講解,開發(fā)板上使用的以太網(wǎng)PHY芯片是88R1518,原理圖如下所示,留給用戶的是RGMII雙沿傳輸數(shù)據(jù),時(shí)鐘頻率

    2024年03月18日
    瀏覽(148)
  • FPGA之以太網(wǎng)詳解

    FPGA之以太網(wǎng)詳解

    以太網(wǎng)(Ethernet)是當(dāng)今局域網(wǎng)采用的最通用的局域網(wǎng)標(biāo)準(zhǔn)。它規(guī)定了包括物理層的連線,電子信號(hào)和介質(zhì)訪問協(xié)議的內(nèi)容。它具有成本低,通信速率快,抗干擾性強(qiáng)的特點(diǎn)。 以太網(wǎng)主要分為: 標(biāo)準(zhǔn)以太網(wǎng):10Mbit/s 快速以太網(wǎng):100Mbit/s 千兆以太網(wǎng):1000Mbit/s 以太網(wǎng)的接口主要

    2024年02月09日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包