交换机/路由器实验2

一、实验目的

1.熟悉NetMagic08的硬件编程方式。
2.基于NetMagic08搭建实验环境,包括NetMagic08的安装、Quartus与NetMagic08的对接。
3.使用Quartus设计硬件逻辑。
4.了解FPGA编程基础。

二、实验内容

1.基础要求
在UM_my/UM.v中使用Verilog语言编写一个模块让NetMagic08实现2口进3口出的基本功能

2.拓展要求
在实现了实验内容1后,改写程序实现从NetMagic08的2端口进入的包转发至所有端口;所有端口进入的包都转发到2号端口

三、实验环境

在这里插入图片描述
1.1台管理节点主机;1台主机A;(分别连接到2口和3口);
2.2根网线;
3.NetMagic08开发平台;
4.软件Quartus 16。主机及网络详细配置参照附带的实验环境拓扑及软件配置文档。

四、实验步骤

首先完成基础要求,实现2进3出的功能配置。

项目1:2进3出端口配置

① step1.使用Quartus 打开 in2out3目录下的硬件工程项目netFPGAmini.qpf
在这里插入图片描述
② step2.在工程项目中,打开文件列表对UM.v文件进行编写(用户模块文件)
注:文件列表在左上角Project Navigator右侧框中,选择Files
在这里插入图片描述
③ step3.在UM.v文件中增加一个新的处理逻辑,在一个always@(posedge clk or negedge reset)逻辑中完成端口2进端口3出的硬件设计。
相关代码如下图:
在这里插入图片描述
新增代码如下:

always@(posedge clk or negedge reset)
      if(!reset)
	      begin
	      	um2cdp_rule <=30'b0; 
	      	um2cdp_rule_wrreq <= 1'b0;
	      	input_port_reg <= 4'b0;		
	      end
      else
	      begin 
	      	if((cdp2um_data_valid==1'b1)&&(cdp2um_data[138:136]==3'b101)) //报文头到达
	      		input_port_reg <= cdp2um_data[131:128]; //锁存输入端口号
	      	//定义转发规则:决定输出端口号、全文转发、摘要转发或丢弃报文。
	      	//如果查表算法较复杂,需要一边接收报文一边查表,以在报文尾到达时产生规
	      	//则信息。路由表可以放在UM的内部RAM中,也可以放在外部DDR2中。 
	      	//这里只实现了最简单的端口交换行为,因此未进行IP层的查表。
	      	else if((cdp2um_data_valid==1'b1)&&(cdp2um_data[138:136]==3'b110)&&(cdp2um_rule_usedw<5'd30)) //报文尾到达
	      		begin		//端口号交换
	      			if(input_port_reg==4'b0001) //来自外部端口2(逻辑端口1)
	      				begin 
	      					um2cdp_rule <=30'h00000004; //送往外部端口3(逻辑端口2) //最高位固定为0,告诉CDP output_ctrl报文来自UM
	      					um2cdp_rule_wrreq <=1'b1; //写规则
	      				end
	      			else if(input_port_reg==4'b0010) //来自外部端口3(逻辑端口2)	
	      				begin
	      					um2cdp_rule <=30'h00000002; //送往外部端口2(逻辑端口1) 
	      					um2cdp_rule_wrreq <=1'b1;	
	      				end
	      			else 
	      				um2cdp_rule_wrreq <=1'b0; //来自其它端口,不写规则
	      		end	
	      	else
	      		um2cdp_rule_wrreq <= 1'b0;	
	      end

④ step4.关键代码解释
if语句首先判断输入信息是否来自端口2,若是则将信息转发到端口3;再判断是否来自端口3,若是则将信息转发到端口2;如果信息来自其他端口,则不进行处理。经过如此步骤,完成2进3出端口信息的转发。
在这里插入图片描述
⑤ step5.点击编译,生成新的.sof文件。
在这里插入图片描述
在这里插入图片描述
⑥ step6.下载。插上设备,进行下载和硬件调试。
在这里插入图片描述
⑦ step7.连通。用网线将两台PC与NetMagic设备相连,设置各自的静态IP地址,再使用命令行ping命令查看是否连通。
a.用网线将两台PC与NetMagic设备相连。
在这里插入图片描述
b.两台PC均打开cmd,输入ipconfig命令,查找PC的设静态IP地址。
PC1:IP地址为169.254.205.152
在这里插入图片描述
PC2:IP地址为169.254.107.107
在这里插入图片描述
c.再使用命令行ping命令查看是否连通。
PC1:连通PC2,PC2地址为169.254.107.107
在这里插入图片描述
PC2:连通PC1,PC1地址为169.254.205.152
在这里插入图片描述

项目2:N进N出端口配置

(1)step1.在工程项目中的UM.v文件中,找到N进N出模块部分,进行编写,完成端口n进端口n出的硬件设计。
相关代码如下图:
在这里插入图片描述
新增代码如下:(把刚刚2进3出的部分替换掉)

always@(posedge clk or negedge reset)
	if(!reset)
		begin
			um2cdp_rule<=30'b0;
			um2cdp_rule_wrreq<=1'b0;
			input_port_reg<=4'b0;
		end	
	else
		begin
			if((cdp2um_data_valid==1'b1)&&(cdp2um_data[138:136]==3'b101)) 
				input_port_reg<=cdp2um_data[131:128];
			else if((cdp2um_data_valid==1'b1)&&(cdp2um_data[138:136]==3'b110)&&(cdp2um_rule_usedw<5'd30))
				begin
					if(input_port_reg==4'b0001)
						begin
							um2cdp_rule<=30'h0000000d;
							um2cdp_rule_wrreq<=1'b1;
						end
					else if(input_port_reg==4'b0010) //来自外部端口3 (逻辑端口2)
						begin
							um2cdp_rule <=30'h0000000b; //送往外部端口2 (逻辑端口1)
							um2cdp_rule_wrreq <=1'b1;
						end
					else if(input_port_reg==4'b0011) //来自外部端口4 (逻辑端口3)
						begin
							um2cdp_rule <=30'h00000007; 
							um2cdp_rule_wrreq <=1'b1;
						end
					else if(input_port_reg==4'b0000) //来自外部端口1 (逻辑端口0)
						begin
							um2cdp_rule <=30'h0000000e; 
							um2cdp_rule_wrreq <=1'b1;
						end
					else
						um2cdp_rule_wrreq <=1'b0; //来自其它端口,不写规则
				end
			else
				um2cdp_rule_wrreq <= 1'b0;
		end

(2)strp2.关键代码解释
在这里插入图片描述
对2进3出代码的if语句部分进行的修改:
a.信号从3号端口进入(b0001,二进制的1):信号被发送到1、3、4三个端口(h0000000d),只要能够连接到相应的目的主机,就能实现连接。
b.信号从3号端口进入(b0010,二进制的2):信号被发送到1、2、4三个端口(h0000000b),只要能够连接到相应的目的主机,就能实现连接。
c.信号从4号端口进入(b0011,二进制的3):信号被发送到1、2、3三个端口(h00000007),只要能够连接到相应的目的主机,就能实现连接。
d.信号从1号端口进入(b0000,二进制的0):信号被发送到2、3、4三个端口(h0000000e),只要能够连接到相应的目的主机,就能实现连接。

以此修改,来实现任意两个口之间的互联。后四位从左到右(从高到低)依次代表4、3、2、1号端口。

(3)step3.点击编译,生成新的.sof文件。
在这里插入图片描述
在这里插入图片描述
(4)step4.下载。插上设备,进行下载和硬件调试。
在这里插入图片描述
(5)step5.连通。用网线将两台PC与NetMagic设备相连,设置各自的静态IP地址,再使用命令行ping命令查看是否连通。
a.用网线将两台PC与NetMagic设备相连。1-4端口均可连接,本组验收过程中试过5种以上的连接组合。
在这里插入图片描述
b.两台PC均打开cmd,输入ipconfig命令,查找PC的设静态IP地址。
PC1:IP地址为169.254.198.176
在这里插入图片描述
PC2:IP地址为169.254.107.107
在这里插入图片描述
c.再使用命令行ping命令查看是否连通。
PC1:连通PC2,PC2地址为169.254.107.107
在这里插入图片描述
PC2:连通PC1,PC1地址为169.254.198.176
在这里插入图片描述

五、实验思考

项目1:2进3出端口配置

1.问:项目2完成后,3号口和4号口能否联通?
答:不能。该项目的if语句只对来自2号口或3号口的信息进行处理,而其他情况的不进行转发。所以3号口和4号口是无法联通的。

项目2:N进N出端口配置

在学习了老师提供的2进3出的硬件逻辑设计基础上,我们小组完成了n进n出的逻辑设计,通过改动if语句的判断规则和转发,完成了任意两个端口之间的信息互通和转发。
除此之外,我们小组在实验过程中,加深了对NetMagic使用的理解,了解了Ping的使用,初步了解了单播和广播的传播和区别。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值