《现代电子技术》2006年第17期摘录::}2006年第17期总第23
-
如发现有乱码,请点击下面链接浏览原文
正文摘录:
:}2006年第17期总第232期险通信与信息技术d网卡初始化的软件编程如下:8019init(){outportb(10ADDR+Ox00。0x21)0//选择页0寄存器,网卡停止运行outportb(IO—ADDR+Ox01,Ox4c);//接收缓冲区范围outportb(10ADDR+Ox02,0x80);//PSTOP,构造缓冲环:Ox4c~Ox80;outportb(IO—ADDR+Ox03,0x4c);//BNRY,设置指针;outportb(IO—ADDR+0x04,0x40);//发送缓冲区范围outportb(I()ADDR+OxOd。ox4e):outportb(IoADDR+OxOe,Oxc8):outportb(IO—ADDR+0xof,Oxff);//清除所有中断标志位outportb(I()ADDR+0xOf,0x00)://没置中断屏蔽寄存器,屏蔽所有中断;page(1);outportb(IOADDR+0x07.0x4d)://初始化当前页寄存器,指向当前正在写的页的下一页;outportb(10ADDR+0x08,0x00)://设置多址寄存器MAR0~5,均设置为0x00;outportb(10ADDR+Ox09,0x00);outportb(10ADDR+0xoa,0x00);outportb(10ADDR+Oxob,Ox00):outportb(10ADDR+0xOe,0x00);outportb(10ADDR+0xod,0x00);outportb(10ADDR+OxOe,0x00);outportb(10ADDR+0xOf。0x00):outportb(10ADDR+0x00,Ox21);//选择页0寄存器,网卡执行命令}3.2设置网卡的MAC地址初始化完网卡后,需要对网卡的物理地址进行设置,才能正确地接收数据包。把相应的物理地址写到PAR05这6个寄存器地址中。这6个寄存器是网卡的工作时候用的地址,只有符合这几个寄存器中所写的地址的数据包才能接收。3.3发送数据数据的发送过程应包含3个步骤:数据包的封装;通过远程DMA将数据包送到数据发送缓冲区;通过RTI。8019的本地DMA将数据送入FIFO进行发送。发送过程分以下几步:(1)数据包在发送前应该按规定的格式封装好,格式如下:(2)把上面的数据包通过远程DMA写送入RTI。8019的数据发送缓冲区。outportb(IOADDR+0x00,0x22);outportb(10ADDR+0x07,0x40);//设置中断状态寄存器ISR为40H,清除发送完成标志outportb(10ADDR+Ox09,0x40);outportb(10ADDR+0x08,0x00);outportb(10ADDR+0xoa,0x50):outportb(10ADDR+OxOb,Ox00);outportb(10ADDR+0x00,0xl2);//设置cR为12H,设置命令寄存器为远程DMA写for(i一0;i<80;i++)outport(0x10<<1,*(buffer+i));//往数据端口写入发送数据temp—inportb(10ADDR+Ox07)://查询中断状态寄存器ISR,等待远程DMA完成outportb(10ADDR+OxOb,0x00);outportb(10ADDR+0xoa,0x00);outportb(10ADDR+OxOO,0x22)://设置CR为22H,设置RBCRl,0为O,远程DMA停止outportb(10ADDR+0x07,Ox40)://设置中断状态寄存器ISR为40H,清除发送完成标志(3)启动本地DMA将数据发送出去。outportb(IO—ADDR+0x06,0xS0);outportb(IO—ADDR+0x05,0x00);outportb(10一ADDR+0x04,Ox40);outportb(IO—ADDR+OxOO,0x26)3.4接收数据RTL8019收到一个完整的以太网数据包后,向CPU发出中断请求,CPU响应8019后,进人中断服务程序并开始接收数据,具体过程如下:(1)读出中断状态寄存器ISR,并写回该寄存器;(2)判断是否数据接收中断;(3)设置CR为22H,本地DMA完成;(4)根据接收状态判断数据包是否接收正确,如果接收正确,启动远程DMA数据包并进行处理;(5)结束远程DMA,设置下一次接收数据指针和接收边界指针。4结语本文以DSPTMS320C5402为处理器,外扩FPGA作为简单的译码电路,通过RTI。8019AS网卡设置,进行信号传输和接收。测试表明,本系统能准确的接收信号。75
阅读此文(图):
点击此处在线翻阅