基于NIOS 2 的网络通信(使用cyclone II EP2C35F672C6)【图片不能显示,正在处理中】

本文介绍了作者在实习期间使用NIOS 2和DM9000A网络芯片进行网络通信的实践经验。通过详细步骤展示了如何配置硬件、初始化DM9000A芯片、编写驱动程序以及实现数据包的发送和接收。此外,还提供了相关软件工具和驱动程序的下载链接,以辅助读者进行实验。
摘要由CSDN通过智能技术生成

本文绝对原创。这是本人实习经过两个星期艰苦探索,艰苦调错摸索出来的。

鸣谢在Baidu上或多或少提供帮助的网友。

特别感谢一下连接的作者。http://www.cnblogs.com/sunev/archive/2012/03/12/2392510.html#2478302

虽然里面的例子不是很稳定,但是通过调整这个例子,再自己研究硬件驱动,我完成我的实习。

使用软件:

在测试的时候可以使用科来数据包生成器来从电脑发包:方便大家使用,我在网盘里给你们个连接

http://pan.baidu.com/share/link?shareid=2267413508&uk=3372569806

在嗅探的时候如果会使用sniffer最好,不会的话我也给个小软件,叫IpTool。基本够用。

http://pan.baidu.com/share/link?shareid=2291917654&uk=3372569806

还有就是7个可能用到的驱动程序。这是我的板子上有的,驱动来源是官方例子。

SRAM_16Bit_512K.rar         http://pan.baidu.com/share/link?shareid=2298119953&uk=3372569806

这是个16Bit 512k的ram。但是由于我的板子上还有个8M的DRAM,我没用这个

Audio_DAC_FIFO.rar           http://pan.baidu.com/share/link?shareid=2302455541&uk=3372569806

这是个音频的模块(有个Audio嘛)

Binary_VGA_Controller.rar   http://pan.baidu.com/share/link?shareid=2303528870&uk=3372569806

这是个视频的模块(VGA)

DM9000A.rar                       http://pan.baidu.com/share/link?shareid=2306257136&uk=3372569806

这是个比较强大的网络模块芯片。我的这个实习主要就是这个芯片

ISP1362.rar                         http://pan.baidu.com/share/link?shareid=2309925263&uk=3372569806

这是个串口芯片。貌似是用来连接USB的

SEG7_LUT_8.rar                 http://pan.baidu.com/share/link?shareid=2313948234&uk=3372569806

这是七段管。玩过电路的肯定不陌生

由于实习没有结束,所以 我就不把工程给你们了。以后再传。而且在测试的时候发现,如果仅仅使用Import的话,一般是不能运行的

本下面的代码设计运行在Quartus II 9.0上和配套的Nios II 9.0 IDE

一、 实现功能;

  1. 实现发包:
  2. 实现收包,获取包的长度
  3. LCD屏幕和七段管显示收发包信息
  4. LCD屏幕显示开发相关说明

二、 DM9000A的相关说明

 

图表 1DM9000A的功能模块分布

下面DM9000的通用初始化函数

我尽最大的可能解释了一下。但是后面还是有些没看懂,保留原始的注释

unsigned int DM9000_init (void

{

  unsigned int  i;        //这是后面需要用的循环次数控制。用来设置网卡MAC地址

  iow(0x1E, 0x01);        //0x1E寄存器为1表示允许输出

  iow(0x1F, 0x00);        //0x1F寄存器为0表示激活芯片功能

  msleep(5);               //等待2毫秒以上让物理器件上电成功 

  iow(NCR,  0x03);        //NCR为3是调用软件的变量复位

  usleep(20);             //等待10微秒以上以完成软件的变量复位

  iow(NCR, 0x00);         //下面一小段代码就是重复执行软件复位。

  iow(NCR, 0x03);        //这是为了尽可能的保证复位操作成功

  usleep(20);

  iow(NCR, 0x00);

 

 

  iow(0x1F, 0x01);        //0x1F为1表示暂停芯片功能。

  iow(0x1F, 0x00);       //这里两行代码是为了重新启动芯片

  msleep(10);              //等待上电成功

 

 

  phy_write(0,PHY_reset);    //初始化芯片状态 

  usleep(50);                   //等待芯片初始化结束

  phy_write(16, 0x404);      //关闭节能模式

  phy_write(4, PHY_txab);   /* set PHY TX advertised ability: ALL + Flow_control */

  phy_write(0, 0x1200);      //开启自动协调,自动嗅探监测功能

  msleep(5);                    //等待功能开启成功

   for (i = 0; i < 6; i++)   //将预设的MAC地址输入板卡

  iow(16 + i, ether_addr[i]);

 

  iow(ISR, 0x3F);             //ISR一共有3个寄存器,存储中断信息。全部清空

  iow(NSR, 0x2C);             //清除阻塞信息

 

  iow(NCR,  NCR_set);        //启用芯片功能,关闭MAC自环路模式

  iow(0x08, BPTR_set);  /* BPTR  REG.08  (if necessary) RX Back Pressure Threshold in Half duplex moe only: High Water 3KB, 600 us */

  iow(0x09, FCTR_set);  /* FCTR  REG.09  (if necessary) Flow Control Threshold setting High/ Low Water Overflow 5KB/ 10KB */

  iow(0x0A, RTFCR_set); /* RTFCR REG.0AH (if necessary) RX/TX Flow Control Register enable TXPEN, BKPM (TX_Half), FLCE (RX) */

  iow(0x0F, 0x00);      /* Clear the all Event */

  iow(0x2D, 0x80);           //切换LED模式

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值