也可以找一个开源的 FPGA 交换机,然后看懂它的代码 (目的是在其基础上,添加特性进行算法实验)
有 C 语言基础,和一点点的数字、模拟电路基础、单片机基础
1
felixcode 2022-09-08 15:56:09 +08:00 via Android
FPGA 编程用的硬件描述语言,需要很多点点的数字电路基础。
|
2
march1993 2022-09-08 16:00:13 +08:00
很简单。。两周? RGMII 不复杂的。。
|
4
villivateur 2022-09-08 16:11:31 +08:00 via Android
FPGA 光入门就得认真学至少一个月吧?交换机的 IP 核可以用现成的,但是自己改的话,我觉得我零基础去做,估计得全职干两三个月
|
5
felixcode 2022-09-08 16:17:12 +08:00 via Android
|
6
402645707 2022-09-08 16:22:37 +08:00
你直接移植一个 Risc-V 核去做的话可能不到一周....
|
7
nealot OP |
8
elboble 2022-09-08 16:47:05 +08:00
一般是买 IP 核,没人从零开始,跟写代码一样,用现成的包
|
9
sujin190 2022-09-08 16:54:49 +08:00
FPGA 的编程语言和 c 可是完完全全不一样的,习惯了 c 的话估计也很难理解 FPGA 咋回事,或者你可以先搞个板子来先玩一下
|
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/ |
11
geekvcn 2022-09-08 17:20:00 +08:00
如果你能如二楼所述零基础两个月自己开发完成,各大云服务商和网络硬件商会抢着继续培养你。如果用现成的 IP 包,且只实现转发和 VLAN ,我建议你直接买现成的交换机,不要浪费时间和金钱。
|
12
nealot OP |
14
felixcode 2022-09-08 18:27:09 +08:00 via Android 1
@nealot
你这需求用 Linux 内核模块去做可能更合适,FPGA 做算法难度高局限性大,上手周期会很长,当然做好了加速效果也很明显。 |
15
felixcode 2022-09-08 18:37:03 +08:00
@nealot
另外哪怕是一定要用 FPGA 实现,也需要用软件先验证算法再针对 FPGA 编程的,不会一上来就用 FPGA 实现的。 |
16
aaniao002 2022-09-08 18:53:46 +08:00 via Android
我记得有两门开发语言,选一门用即可,语言熟悉了和写 c 区别不大。主要是理解 fpga 为什么这么写,以及实际交换机的功能的实现原理要的时间长,并且最后实验用开发板可能存不下这些程序。毕业设计的话你选个简单点的,什么音乐播放呀什么的就好。
|
17
aaniao002 2022-09-08 18:57:44 +08:00 via Android
对哦,你了解过你要写的是 2 层交换机还是 3 层吗?要不写个 hub 吧,这个快。 ^_^
|
18
geekvcn 2022-09-08 19:12:28 +08:00
@nealot dpdk 延时都高,什么应用场景延时这么敏感? dpdk 处理千兆小包线速转发小菜一碟啊,感觉作为基础 OVS+DPDK 完全满足需求啊,另外 OVS 也支持 OpenCL ASIC FPGA 加速。
|
19
fonlan 2022-09-08 22:46:22 +08:00 via Android
@nealot 基于 vlan priority 的自定义 QoS?如果是基于 IP 层或者更高层的 QoS 的话那就不是普通二层交换机了,一般交换机不会解 IP 层数据的。
|
20
lambdaq 2022-09-08 22:52:23 +08:00
我觉得 fpga 不难,难的是你要在上面实现一个 tcp/ip 栈。。除非你找现成。。。
|
21
guowq 2022-09-08 23:00:07 +08:00 via Android
0 基础够呛
|
22
DragonL 2022-09-08 23:15:31 +08:00
写的时候要有硬件思维,要考虑综合后生成的是什么电路,写完之后应该还有资源和时序的优化吧,感觉和软件还是思路有些不一样
|
23
littlewing 2022-09-09 00:10:07 +08:00
@nealot 在 2 层交换机上做 QOS ?
|
24
leloext 2022-09-09 00:36:35 +08:00
看了一圈好像都没提到射频电路的部分,设计电路板的时候还要考虑杂散辐射抑制和邻道干扰抑制。
|
25
westerndream 2022-09-09 00:57:10 +08:00
0 基础够呛,其实这东西核心不在于会不会用 fpga ,会不会写代码,这些都可以短时间学起来,而是你的转发架构,0 基础的话可能最后做出来性能比较差,商用转发芯片的架构师至少得从业十年吧
mac 核应该有些开源的,基于 python 或者 Scala 语言的,但是交换架构啥的应该还是得自己弄啊,交换机应该核心的就是 qm (缓存队列管理)和查找表(转发表项),然后你要 QOS 相关还要考虑优先级调度带来的的性能、时延抖动之类的问题 楼上说的有道理,特别是架构方面,一般是要做仿真的,合理的抽象并建模,验证功能和性能,再细化方案 |
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 本科学的还挺好。 |
27
YUX 2022-09-09 08:14:32 +08:00 via Android
@nealot 7 楼的意思是把 riscv 的设计 map 到 fpga 上,这样你就收获了一枚通用 cpu 然后就。。。
|
28
farah9 2022-09-09 11:31:32 +08:00 via iPhone
目前还没有 fpga 完整实现 tcp/ip 的吧,只搞到二层应该容易。
|