程序员达达

Tag Archive for NetFPGA

NetFPGA 1G Reference Router的input_arbiter介绍

input_arbiter作为8个接收队列与user_data_path之间的接口,起到的左右用一句话来说就是“八路变一路”。 跟所有在user_data_path里面的模块一样,在端口接收数据之后,直接扔到small_fifo里面。这里有八个这样的small_fifo。代码里面使用了Verilog的“generate”关键字与for循环,来实例化这八个队列。 那既然是轮旬,就是得有个循环的过程。代码如下: assign cur_queue_plus1 = (cur_queue==NUM_QUEUES-1)? 0 : cur_queue + 1; 这个cur_queue_plus1变量肯定就是拿来更新cur_queue的。 剩下的部分主要是FSM,其时序逻辑部分如下: always @(posedge clk) begin if(reset) begin state <= IDLE; cur_queue <= 0; fifo_out_ctrl_prev <= 1; out_wr <= 0; out_ctrl <= 1; out_data <= 0; end else begin state <= state_next; cur_queue <= cur_queue_next; fifo_out_ctrl_prev <= fifo_out_ctrl_prev_next; out_wr <= out_wr_next; out_ctrl <=…

NetFPGA 1G Reference Router顶层模块解析

Reference Router的文件是分散在各个模块的文件夹下面的,阅读起来很不方便。于是干脆创建一个ISE下面的project,把所有的东西弄一块。 NetFPGA的顶层模块就一个nf2_top,里面包含了4个rgmii_io和一个nf2_core。这个rgmii全程是Reduced Gigabit Media Independent Interface。相当于PHY层和MAC层的一个接口。而nf2_core,顾名思义,就是整个reference router的核心了。 展开nf2_core,可以看到里面包含了下图所示的各种模块。 其中: 1. nf2_mac_grp负责所有MAC层的模块,其下包含一个开源的gig_eth_mac,一个接收队列,一个发送队列,寄存器模块。其中gig_eth_mac模块在以前的版本是用的Xilinx的IP Core。 2. cpu_dma_queue是user data path和DMA之间的接口,里面没什么逻辑电路,全是各个子模块的互联。子模块也相对简单,两个queue(收、发)还有对应的寄存器模块。 3. sram_arbiter,这个模块根据注释说是提供存储在SRAM里面的Register的接口。以后再仔细看看吧。 4. nf2_dma,提供DMA接口逻辑,MAC->kernel或者kernel->MAC 5. nf2_reg_grp是Register的顶层接口。 6. user_data_path算是整个reference router里面最核心的模块了。我会在令一篇文章里面详细介绍。

NetFPGA Regression Test: nf_test.py

如果你是Fedora 14,恭喜你,regression test会异常容易。 1. 连线 官网上的regression test说的连接是: eth1 — nf2c0 eth2 — nf2c1 不过,nf2c2和nf2c3也是不能空着的,两个之间拿线连接一下就好。 nf2c2 — nf2c3 2. 如果你只有两个网口,其默认名为eth0和eth1: 你需要做的是根据连线重命名一下,参考:Change eth1 nomenclature to eth0以及Change network device name from eth1 back to eth0 需要修改的文件有: A. “/etc/udev/rules.d/70-persistent-net.rules”: # PCI device 0x15ad:0x07b0 (vmxnet3) SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”00:50:56:b2:23:e0″, ATTR{type}==”1″, KERNEL==”eth*”, NAME=”eth0″ 修改相应的eth*(非必须) B. “/etc/sysconfig/network-scripts/ifcfg-*”以及“/etc/sysconfig/networking/ifcfg-*”(如果存在的话) (注:对于只有两个网口的同学,推荐的办法是将eth0直接该为eth2.这样再改回来比较省事) 3. 运行 ~/netfpga/bin/nf_test.py hw…

NetFPGA 1G on Fedora 14(官方推荐安装)

NetFPGA 1G的官方推荐OS是Fedora14,但是网站上的教程没有具体的步骤。找了半天才发现具体安装步骤被奇葩地放到了10G下面:“Installing Fedora 14”。 需要注意的有: 1.确认在安装的时候选上Software Development选项 2.如果你联网了,可以把光盘外的repo装上。如果你碰到了“Unable to read packege metadata from repository. This may be due to a missing repodata directory. Please ensure that your repository has been correctly generated”,点击“Edit Repository”按钮,将https修改为http即可。 安装完成之后,由于Fedora的安全策略,无法用root登录。需要做如下修改: 找到下面三个文件,注释掉 auth required pam_succeed_if.so user != root quiet # vim /etc/pam.d/gdm # vim /etc/pam.d/gdm-password # vim /etc/pam.d/gdm-fingerprint 之后直接用root登录安装NetFPGA 关掉selinux: 编辑/etc/sysconfig/selinux,将SELINUX设置为“disabled” 关掉不需要的系统服务(否则做regression…

NetFPGA Regression Test: gui_scone

netfpga_java_gui

运行gui_scone的regression test可以使用下面命令: ~/netfpga/bin/nf_regress_test.pl –project gui_scone 但是基本上第一次的话都是会报错的: NetFPGA environment: Root dir: /home/dnrl/netfpga Project name: gui_scone Project dir: /home/dnrl/netfpga/projects/gui_scone Work dir: /tmp/dnrl   Root directory is /home/dnrl/netfpga Running tests on project ‘gui_scone’… Running global setup… PASS Running test ‘test_main_frame’… FAIL Output was: Exception in thread "main" java.lang.NoClassDefFoundError: MainFrameTest   test_main_frame/run exited with value 1   Running test…