FPGA千兆以太网SGMII接口配置实战

一:背景环境

        物理环境:外部为标准千兆网络RJ45接口,经过PHY芯片后,转化为SGMII接口连接在XILINX芯片的GTX上,需要正确对网络数据进行获取。

        采用1G/2.5G Ethernet PCS/PMA or SGMII(PG047)Tri-Mode Ethernet MAC(PG051)的IP核。

二:1G/2.5G Ethernet PCS/PMA 配置和说明

本次选择的MAC IP核,如果和PS连接可以选择ZYNQ PS ;

本次选择SGMII,如果电口可以选择1000BASEX,则为SFP端口。

本次选择MDIO不勾选,勾选配置有问题。

GTX一个bank共用一组差分时钟,如果多个SGMII端口,则一个选择包含,其它选择不包含。

       多个SGMII端口的共享一个core的连接图示:

        IP核其它端口说明配置:

// input ports .independent_clock_bufg (clk_200m ), // must 200m clk ; .configuration_vector (5'b10000 ), // .an_adv_config_vector ('d33 ), // .an_restart_config ('b0 ), // .speed_is_10_100 (speedis10100 ), // link MAC IP Core speedis10100 .speed_is_100 (speedis100 ), // link MAC IP Core speedis100 .sigal_detect ('b1 ), // // output ports .status_vector (),// IP Core & sgmii link status

status_vector可以查看当前IP核以及链路状态,各个bit位说明:

三:Tri-Mode Ethernet MAC 配置和说明

不配置MDIO和自适应,直接1000M。

关闭包过滤和统计功能:

       IP核其它端口说明配置:

//----------------------------------// // input ports .gtx_clk (userclk2_out ), // link SGMII IP Core userclk2_out .pause_val ('b0 ), // .pause_req ('b0 ), // // output ports .speedis10100 (speed_is_10_100), // link SGMII IP Core speed_is_10_100 .speedis100 (speed_is_100 ), // link SGMII IP Core speed_is_100

三:上版验证 

        环境:芯片xc7z045ffg900-2 ,bank109一共四路SGMII端口。

        结果:四路逻辑端接收的AXIS数据正确,接收正常;发送数据正常;

        过程以及遗留问题:

(1)两个IP核都强制的千兆,未验证自适应。

(2)MAC IP与SGMII IP配置MDIO后有问题未进一步验证。

Read more

Claude Code 的完美平替:OpenCode + GitHub Copilot(顶级模型+最优价格)

引言:Claude 虽好,但你真的能用上吗? 在当前席卷全球的“Vibe Coding”浪潮中,Anthropic 推出的 Claude 系列模型 + 终端工具 Claude Code,凭借极强的逻辑推理能力,成为了开发者眼中的“白月光”。但现实是残酷的:对于中国开发者而言,账号随时被封、海外信用卡支付遭拒、API 额度受限以及复杂的网络环境,构成了一道难以逾越的门槛。 虽然最近国产编程模型不断发力,Claude Code + GLM-4.7 的表现非常出色,但面对复杂问题,Claude系列模型依然完胜。难道我们只能眼馋Claude全家桶的编程体验吗? 作为一名追求极致生产力的开发者,我发现了一个绝佳的完美替代方案:OpenCode + GitHub Copilot。这个组合不仅能让你享受如 GLM-4.7 一样的性价比,还能更方便的使用 Claude 的顶级模型。 Claude Code 的开源平替:OpenCode

AI 编程工具选型:Copilot、Cursor、Codex 核心差异

AI 编程工具选型:Copilot、Cursor、Codex 核心差异

【如文章引起大家共鸣,请“点赞”以及“转发”,以支持继续创作,谢谢大家!】 朋友们大家好!今天咱们不聊那些虚头巴脑的,直接来点实在的——AI编程工具选型,Copilot、Cursor、Codex这仨到底咋选?别急,我这就用最接地气的方式,给你唠唠它们的“脾气秉性”,保证你听完就能上手挑! 先说Copilot,这哥们儿可是“代码补全界的扛把子”!它就像你身边的“代码小秘书”,你敲代码时,它就在旁边默默观察,你刚敲个“for”,它立马给你补上“(int i=0;i<n;i++)”,那叫一个快!而且,它还支持多IDE,VS Code、JetBrains啥的,都能无缝对接。不过呢,Copilot也有个“小毛病”,就是它更擅长“补全”,对于复杂的代码重构或者项目级理解,就有点力不从心了。

FPGA AD7606串行驱动与并行驱动

FPGA AD7606串行驱动与并行驱动

AD7606是一个八通道16分辨率的adc,有两种测量范围5v和10v,每个通道采样率最高200ksps,支持多种驱动方案,最常用的有串行方案与并行方案,其中串行方案采用spi协议进行数据传输,可以在io引脚不够用的情况下采用,而并行方案采用16个io在一个采样边沿同时接收一次采样数据。 首先介绍ad7606的内部结构 内部主要部分有四个模块,模块1是在每个通道处添加了2阶巴特沃斯模拟低通滤波器,用来抗混叠,其截止频率受电压测量范围影响,当范围为5v时截止频率15khz,10v时23khz 因此在使用ad7606测量截止频率以上的信号时,需要在前方加入仪表放大器来放大信号,否则信号会被ad7606滤除 模块2用来控制复位、测量范围、通道转换,range为0时测量范围0~5v,1时测量范围0~10v,通道转换是指八个通道可分为两组,A组包含0~3通道,B组包含4~7通道,转换的意思就是在adc内部进行模拟量向数字量的转换,转换需要消耗一定的时间,而要指定那组通道转换则受convst信号影响,convst A信号拉高会让A组转换,convst B拉高会让B组转换,一般convst

dify接入企业微信群聊机器人详细步骤(从零到上线全记录)

第一章:dify接入企业微信群聊机器人详细步骤(从零到上线全记录) 准备工作:获取企业微信机器人Webhook URL 在企业微信管理后台创建群聊机器人,获取唯一的 Webhook 地址。该地址用于外部系统向指定群组发送消息。登录企业微信 → 进入“应用管理” → 创建或选择一个自建应用 → 添加“群机器人”,复制生成的 Webhook URL。 配置Dify工作流触发外部通知 在 Dify 中设置自定义响应后处理逻辑,通过 HTTP 请求将输出内容推送到企业微信群。使用内置的“HTTP 请求”节点,填写以下参数: * Method: POST * URL: 企业微信机器人的 Webhook 地址 * Body (JSON): 包含要发送的消息内容 { "msgtype": "text", "text"