V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nealot
V2EX  ›  程序员

零基础使用 FPGA 开发板实现一个四口千兆以太网交换机有多难?

  •  
  •   nealot · 2022-09-08 15:51:20 +08:00 · 3781 次点击
    这是一个创建于 568 天前的主题,其中的信息可能已经有所发展或是发生改变。

    也可以找一个开源的 FPGA 交换机,然后看懂它的代码 (目的是在其基础上,添加特性进行算法实验)

    有 C 语言基础,和一点点的数字、模拟电路基础、单片机基础

    29 条回复    2022-09-09 16:33:56 +08:00
    felixcode
        1
    felixcode  
       2022-09-08 15:56:09 +08:00 via Android
    FPGA 编程用的硬件描述语言,需要很多点点的数字电路基础。
    march1993
        2
    march1993  
       2022-09-08 16:00:13 +08:00
    很简单。。两周? RGMII 不复杂的。。
    nealot
        3
    nealot  
    OP
       2022-09-08 16:01:04 +08:00
    @felixcode 如果全职投入,估计要多少时间呢?

    只需要支持基本的二层转发和 VLAN 就行
    villivateur
        4
    villivateur  
       2022-09-08 16:11:31 +08:00 via Android
    FPGA 光入门就得认真学至少一个月吧?交换机的 IP 核可以用现成的,但是自己改的话,我觉得我零基础去做,估计得全职干两三个月
    felixcode
        5
    felixcode  
       2022-09-08 16:17:12 +08:00 via Android
    @nealot
    不好说,你先把 fpga 开发流程走一遍吧,写个简单的数字逻辑,这样也能有个概念。
    如果不画板子的话,主要难度是数字电路设计,跟软件编程思路完全不一样。
    402645707
        6
    402645707  
       2022-09-08 16:22:37 +08:00
    你直接移植一个 Risc-V 核去做的话可能不到一周....
    nealot
        7
    nealot  
    OP
       2022-09-08 16:34:22 +08:00
    @402645707 可以描述得更具体一些吗

    Risc-V 不是类似 ARM 的传统型 CPU 吗,和 FPGA 的关系是什么呢?
    elboble
        8
    elboble  
       2022-09-08 16:47:05 +08:00
    一般是买 IP 核,没人从零开始,跟写代码一样,用现成的包
    sujin190
        9
    sujin190  
       2022-09-08 16:54:49 +08:00
    FPGA 的编程语言和 c 可是完完全全不一样的,习惯了 c 的话估计也很难理解 FPGA 咋回事,或者你可以先搞个板子来先玩一下
    402645707
        10
    402645707  
       2022-09-08 17:14:42 +08:00   ❤️ 7
    @nealot 你可以考虑先把 FPGA 的概念、常用 IP 核和外设过一下。、
    了解 FPGA:
    https://nandland.com/fpga-101/
    手撕常用逻辑器件:
    https://hdlbits.01xz.net/wiki/Main_Page
    现成的开源交换机交换机
    https://github.com/MeshSr/ONetSwitch
    大清的组成原理课程:
    https://lab.cs.tsinghua.edu.cn/cod-lab-docs/labs/1-overview/
    geekvcn
        11
    geekvcn  
       2022-09-08 17:20:00 +08:00
    如果你能如二楼所述零基础两个月自己开发完成,各大云服务商和网络硬件商会抢着继续培养你。如果用现成的 IP 包,且只实现转发和 VLAN ,我建议你直接买现成的交换机,不要浪费时间和金钱。
    nealot
        12
    nealot  
    OP
       2022-09-08 17:41:51 +08:00
    @geekvcn 主要目的不是实现标准的转发,而是在其基础上实验其它算法,用于研究和展示

    用 dpdk 延迟可能有点太高了
    nealot
        13
    nealot  
    OP
       2022-09-08 17:42:16 +08:00
    @nealot 主要是和 QoS 相关的调度和整形算法
    felixcode
        14
    felixcode  
       2022-09-08 18:27:09 +08:00 via Android   ❤️ 1
    @nealot
    你这需求用 Linux 内核模块去做可能更合适,FPGA 做算法难度高局限性大,上手周期会很长,当然做好了加速效果也很明显。
    felixcode
        15
    felixcode  
       2022-09-08 18:37:03 +08:00
    @nealot
    另外哪怕是一定要用 FPGA 实现,也需要用软件先验证算法再针对 FPGA 编程的,不会一上来就用 FPGA 实现的。
    aaniao002
        16
    aaniao002  
       2022-09-08 18:53:46 +08:00 via Android
    我记得有两门开发语言,选一门用即可,语言熟悉了和写 c 区别不大。主要是理解 fpga 为什么这么写,以及实际交换机的功能的实现原理要的时间长,并且最后实验用开发板可能存不下这些程序。毕业设计的话你选个简单点的,什么音乐播放呀什么的就好。
    aaniao002
        17
    aaniao002  
       2022-09-08 18:57:44 +08:00 via Android
    对哦,你了解过你要写的是 2 层交换机还是 3 层吗?要不写个 hub 吧,这个快。 ^_^
    geekvcn
        18
    geekvcn  
       2022-09-08 19:12:28 +08:00
    @nealot dpdk 延时都高,什么应用场景延时这么敏感? dpdk 处理千兆小包线速转发小菜一碟啊,感觉作为基础 OVS+DPDK 完全满足需求啊,另外 OVS 也支持 OpenCL ASIC FPGA 加速。
    fonlan
        19
    fonlan  
       2022-09-08 22:46:22 +08:00 via Android
    @nealot 基于 vlan priority 的自定义 QoS?如果是基于 IP 层或者更高层的 QoS 的话那就不是普通二层交换机了,一般交换机不会解 IP 层数据的。
    lambdaq
        20
    lambdaq  
       2022-09-08 22:52:23 +08:00
    我觉得 fpga 不难,难的是你要在上面实现一个 tcp/ip 栈。。除非你找现成。。。
    guowq
        21
    guowq  
       2022-09-08 23:00:07 +08:00 via Android
    0 基础够呛
    DragonL
        22
    DragonL  
       2022-09-08 23:15:31 +08:00
    写的时候要有硬件思维,要考虑综合后生成的是什么电路,写完之后应该还有资源和时序的优化吧,感觉和软件还是思路有些不一样
    littlewing
        23
    littlewing  
       2022-09-09 00:10:07 +08:00
    @nealot 在 2 层交换机上做 QOS ?
    leloext
        24
    leloext  
       2022-09-09 00:36:35 +08:00
    看了一圈好像都没提到射频电路的部分,设计电路板的时候还要考虑杂散辐射抑制和邻道干扰抑制。
    westerndream
        25
    westerndream  
       2022-09-09 00:57:10 +08:00
    0 基础够呛,其实这东西核心不在于会不会用 fpga ,会不会写代码,这些都可以短时间学起来,而是你的转发架构,0 基础的话可能最后做出来性能比较差,商用转发芯片的架构师至少得从业十年吧
    mac 核应该有些开源的,基于 python 或者 Scala 语言的,但是交换架构啥的应该还是得自己弄啊,交换机应该核心的就是 qm (缓存队列管理)和查找表(转发表项),然后你要 QOS 相关还要考虑优先级调度带来的的性能、时延抖动之类的问题
    楼上说的有道理,特别是架构方面,一般是要做仿真的,合理的抽象并建模,验证功能和性能,再细化方案
    js8510
        26
    js8510  
       2022-09-09 06:26:05 +08:00   ❤️ 1
    我上学时候修了一门课,需要学 verilog(另外一种 hardware description language)并实现一个玩具级别的 router (只是接通课程提供的借口做 routing, 然后教授会根据每个人最后 router performance 给大家打分)。

    当时候我用了大概 3 个月,包括熟悉软件,语言,开发平台,研究算法,反复优化性能等等。 当时我的基础大概是:
    - 本科拿过一些 coding 方面的小奖项。熟悉 Java, python, 会用 C 。
    - 参加过数电相关的设计竞赛。设计过类似自动平衡车之类的东西。
    - 我当时会 VHDL 本科学的还挺好。
    YUX
        27
    YUX  
       2022-09-09 08:14:32 +08:00 via Android
    @nealot 7 楼的意思是把 riscv 的设计 map 到 fpga 上,这样你就收获了一枚通用 cpu 然后就。。。
    farah9
        28
    farah9  
       2022-09-09 11:31:32 +08:00 via iPhone
    目前还没有 fpga 完整实现 tcp/ip 的吧,只搞到二层应该容易。
    nealot
        29
    nealot  
    OP
       2022-09-09 16:33:56 +08:00
    @farah9 是二层的基于 VLAN 的 QoS ,不需要 TCP/IP
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2847 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 14:30 · PVG 22:30 · LAX 07:30 · JFK 10:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.