计算机网络原理实验三

2024-06-18

计算机网络原理实验三(精选9篇)

计算机网络原理实验三 第1篇

实验

三、套接字编程

1.实验目的:

两人一组,编写一个客户端、服务器程序,掌握Socket编程原理。2.实验环境:

连入局域网络的主机一台。3.实验指导:

Socket API是实现进程间通信的一种编程设施,也是一种为进程间提供底层抽象的机制。理解socket编程模型及其原理。4.实验分析,回答下列问题。

a.运行指导书中的程序,并修改服务器的功能(自己思考),改写成多线程web服务器(选作),附上源代码,并加关键代码注释。服务器:

#include “stdafx.h” #include #include #include #include #pragma comment(lib,“ws2_32.lib”)#define MYPORT 3490 /*定义用户连接端口*/ #define BACKLOG 10 /*多少等待连接控制*/ #define SERVER_IP_ADDR “113.55.34.41” /*服务器的IP地址*/ int _tmain(int argc, _TCHAR* argv[]){ SOCKET sock, msgsock;#define PORT 3490 int length = 0;struct sockaddr_in server;struct sockaddr tcpaddr;char buf[1024] = “";int rval= 0, len= 0, err = 0,i;//用于循环 WORD wVersionRequested;WSADATA wsaData;wVersionRequested = MAKEWORD(2, 2);err = WSAStartup(wVersionRequested, &wsaData);if(err!= 0)return-1;sock = socket(AF_INET, SOCK_STREAM, 0);if(sock < 0){ perror(”opening stream socket“);exit(1);} server.sin_family = AF_INET;server.sin_port = htons(MYPORT);server.sin_addr.s_addr = inet_addr(SERVER_IP_ADDR);memset(server.sin_zero, 0, sizeof(server.sin_zero));rval = bind(sock,(struct sockaddr *)&server, sizeof(server));if(rval < 0){ perror(”binding stream socket“);exit(1);} length = sizeof(server);if(getsockname(sock,(struct sockaddr *)&server, &length)< 0){ perror(”getting socket name“);exit(1);} printf(”socket port #%dn“, ntohs(server.sin_port));listen(sock, 5);len = sizeof(struct sockaddr);do { msgsock = accept(sock,(struct sockaddr *)&tcpaddr,(int *)&len);if(msgsock ==-1)perror(”accept“);else {

for(i=0;i<=1000;i++)//循环控制 { memset(buf, 0, sizeof(buf));if((rval = recv(msgsock, buf, sizeof(buf),0)< 0))perror(”reading stream message“);if(rval == 0)

printf(”%sn“, buf);} } closesocket(msgsock);} while(TRUE);closesocket(msgsock);

客户端:

#include ”stdafx.h“ #include #include #include #include return 0;} #pragma comment(lib,”ws2_32.lib“)#define PORT 3490 /* 客户机连接远程主机的端口*/ #define MAXDATASIZE 100 /* 每次可以接收的最大字节*/ int _tmain(int argc, _TCHAR* argv[]){ WORD wVersionRequested;WSADATA wsaData;int err = 0 ,rval = 0 ,i;SOCKET fd;struct sockaddr_in servaddr;struct hostent* hp;char buf[1024] = ”“;wVersionRequested = MAKEWORD(2, 2);err = WSAStartup(wVersionRequested, &wsaData);if(err!= 0)return-1;if((fd = socket(AF_INET, SOCK_STREAM, 0))< 0){ printf(”Can not create socket!“);exit(2);} servaddr.sin_family = AF_INET;servaddr.sin_port = htons(PORT);servaddr.sin_addr.S_un.S_addr=inet_addr(”113.55.34.41“);memset(servaddr.sin_zero, 0, sizeof(servaddr.sin_zero));rval = connect(fd,(sockaddr*)&servaddr, sizeof(servaddr));if(rval < 0){ printf(”Can not create connect!“);exit(3);} else {

for(i=0;i<=1000;i++)//循环控制 { memset(buf, 0, 1024);scanf(”%s“,&buf);rval = send(fd, buf, strlen(buf)+ 1,0);if(rval < 0)printf(”Write error!“);} } closesocket(fd);exit(5);} return 0;

b.给出程序调试和运行的截图。

c.回答下列问题:

(1)为什么在服务器和客户端要包含winsock2.h文件?

答:用Winsock2 API,这样有助于对异步、非阻塞Socket编程机制的理解。为了简单起见,服务器端和客户端的应用程序均是基于MFC的标准对话框,网络通信部分基于Winsock2 API实现。

(2)为什么在服务器和客户端程序中要加入#pragma comment(lib,”ws2_32.lib")语句,如果不加会出现什么问题?

答:用该语句,指示编译当前单元时,linker会优先链接该preproccessor 指定的lib文件,这样等于就告诉编译器有这样一个lib文件可以去链接。如果不加就会出现类似“LNK2019: 无法解析的外部符号__imp__closesocket@4,该符号在函数_wmain 中被引用”的错误。

(3)为什么在服务器和客户端程序中要使用WSAStartup函数,如果不用程序会有什么问题?

答:使用Winsock库函数之前,必须先调用函数WSAStartup,该函数负责初始化动态连接库Ws2_32.dll.若ws2_32.dll尚未初始化,是无法调用WSAGetLastError.WSAStartup是任何使用Winsock的应用程序或者 DLL首先必须调用Winsock库函数.一方面它初始化 ws2_32.dll,另一方面他用于在应该程序DLL与系统Winsock库版本协商。所以,如果不用该函数程序将无法按照正常的情况进行。

(4)如果程序在Turbo C环境下运行,在服务器和客户程序中还需要上面的内容吗?

答:不需要。

(5)如果服务器程序中没有memset(server.sin_zero, 0,sizeof(server.sin_zero));语句,程序会出现什么错误,为什么?

答:此函数是为新申请的内存做初始化工作。如果去掉该语句在理论上面应该有错误,但是在我的实际操作中却没有错误,这个问题在我将继续深究。

(6)如果先运行客户端程序,程序会有什么现象,为什么会有这一现象?

答:无法连接。因为如果先运行客户端的话,没有服务器端等待,那么服务器端艰苦肯定无法给予响应,所以也就无法连接。

(7)如果服务器程序所在计算机没有连接网络,程序会发生什么错误?我们捕获到什么错误信息?

答:无法连接。会出现报错。

(8)上述服务器是串行处理多个客户端的请求,如何该成并发处理的服务器?

答:用父进程调用accept,然后调用fork,这样,已连接套接口就在父进程与子进程间共享,一般来说,接下来便是子进程读、写已连接套接口并关闭侦听套接口,而父进程则关闭已连接套接口。

5.实验环境:提供的Socket程序在visual c++ 2008中的设置(1)创建工程

(2)在应用程序开发中选择预编译头

(3)源程序有如下改变,winsock2.h windows.h头文件顺序要改变

#include #include

计算机网络原理实验三 第2篇

AMI/HDB3码型变换实验

一.实验目的

1.了解二进制单极性码变换为 AMI/HDB3 码的编码规则; 2.熟悉 HDB3 码的基本特征;

3.熟悉 HDB3 码的编译码器工作原理和实现方法; 4.根据测量和分析结果,画出电路关键部位的波形。

二.实验器材

1.JH5001通信原理综合实验系统 2.20MHz双踪示波器 3.函数信号发生器

三.实验内容

1.AMI码编码规则验证

将输入信号选择跳线开关KD01设置在M 位置(右端)、单/双极性码输出选择开关设置KD02设置在2_3 位置(右端)、AMI/HDB3编码开关KD03设置在AMI位置(右端),使该模块工作在AMI码方式。

(1).将CMI编码模块内的M序列类型选择跳线开关KX02设置在2_3位置(右端),产生7位周期m序列。用TPD01同步。同时观测输入数据TPD01和AMI输出双极性编码数据TPD05波形,如图3.1所示;同时观测输入数据TPD01和AMI 输出单极性编码数据TPD08波形,如图3.2所示;

(2).将CMI编码模块内的M序列类型选择跳线开关KX02 设置在1_2 位置(左端),产生15 位周期m 序列。用TPD01同步。同时观测输入数据TPD01和AMI输出双极性编码数据TPD05波形,如图3.3所示;同时观测输入数据TPD01和AMI 输出单极性编码数据TPD08波形,如图3.4所示。

图3.1 7位m序列双极性

图3.2 7位m序列单极性

图3.3 15位m序列双极性

图3.4 15位m序列单极性

分析:经过对上述波形的分析,输入和输出基本满足了AMI码编码规则,+1和-1交替出现。且7位m序列与15位m序列对应的波形基本一致,只是15位m序列波形宽度变窄。

2.HDB3码变换规则验证

(1).将KD01设置在M位置,KD02设置在2_3位置,KD03设置在HDB3位置;(2).将KX02设置在2_3位置,观测TPD01和TPD05波形及TPD08波形,用TPD01同步,分别得到7位m序列双/单极性波形图,如图3.5和图3.6所示;(3).将KX02设置在1_2位置,重复上述测试步骤,可得到15位m序列双/单极性波形图,如图3.7和图3.8所示;

(4).使输入数据端口悬空产生全1码(方法同1),重复上述测试步骤,可得到全1码双/单极性波形图,如图3.9所示;(5).使输入数据为全0码(方法同1),重复上述测试步骤,可得到全0码双/单极性波形图,如图3.10和图3.11所示。

图3.5 7位m序列双极性

图3.6 7位m序列单极性

图3.7 15位m序列双极性

图3.8 15位m序列单极性

图3.9 全1码双/单极性

图3.10 全0码双极性

图3.11 全0码单极性

分析:经过对上述波形的分析,输入和输出基本满足了HDB3码编码规则,最多只有3个连零。且7位m序列与15位m序列对应的波形基本一致,只是15位m序列波形宽度变窄。

3.HDB3码译码和时延测量

(1).将KD01设置在M位置,KX02设置在1_2位置,KP02设置在HDB3位置;(2).观测TPD01和TPD07波形,用TPD01同步,如图3.12所示;(3).将KX02设置在2_3位置,重复上译步骤测量,如图3.13所示。

图3.12 15位m序列

图3.13 7位m序列

分析:15位m序列的HDB3编码和译码的数据时延是0,7位m序列的HDB3编码和译码的数据时延是100us。

4.HDB3编码信号中同步时钟分量定性观测

(1).将KD01设置在M位置,KX02设置在1_2位置,KP02设置在HDB3位置;(2).将KD02设置在2_3位置,测量TPP01波形,如图3.14所示;然后将KD02设置在1_2位置,观测TPP01波形变化,如图3.15所示;

(3).将KD02设置在2_3位置,使输入数据为全“1”码,重复上述测试步骤,分别得图3.16(KD02在2_3位置)和图3.17(KD02在1_2位置);

(4).使输入数据为全“0”码,重复上述测试步骤,分别得图3.18(KD02在2_3位置)和图3.19(KD02在1_2位置)。

图3.14 15位m序列单极性

图3.15 15位m序列双极性

图3.16 全1码单极性

图3.17 全1码双极性

图3.18 全0码单极性

图3.19 全0码双极性

分析:HDB3码编码信号转换为双极性和单极性码中双极性的码型时钟分量更丰富。全1码和全0码单极性时钟能量丰富,双极性时钟能量小。

思考:HDB3码与AMI码都是单极性时钟能量丰富,双极性时钟能量小。只是AMI中具有长连0码格式的数据在AMI中失步,无时钟能量。

5.HDB3译码位定时恢复测量

(1).将KD01设置在M位置,KX02设置在1_2(或2_3)位置,KP02设置在HDB3位置;

(2).先将KD02设置在2_3位置,测量点TPD02和TPD06波形,用TPD02同步,如图3.20所示;然后,再将KD02设置在1_2位置,观测TPD02和TPD06波形,如图3.21所示;

(3).将KD02设置回2_3位置,再将跳线开关KD01拨除,使输入数据为全1码(方法见1)。重复上述测试步骤,如图3.22(KD02设置在2_3位置)和图3.23所示(KD02设置在1_2位置)。

图3.20 m序列单极性

图3.21 m序列双极性

图3.22 全1码单极性

图3.23 全1码双极性

分析:m序列和全1码单极性时,收发时钟同步;双极性时,收发时钟不同步。

思考:接受端为便于提取同步型号,需要对收到的HDB3编码信号做何处理?

答:双/单极性变换器及相加器构成一个整流器,HDB3码经全波整流后得到的正脉冲信号中含有位同步信号频率离散谱。

四.实验思考题

1.总结 HDB3 码的信号特征

答:(1)由HDB3码确定的基带信号无直流分量,且只有很小的低频分量。

(2)HDB3中连0串的数目至多为3个,易于提取定时信号。(3)编码规则复杂,但译码较简单。它的编码原理为:先把消息代码变换成AMI 码,然后去检查AMI 码的连0 串情况,当没有4 个以上连0 串时,则这时的AMI 码就是HDB3 码;当出现4 个以上连0 串时,则将每4 个连0 小段的第4 个0 变换成与其前一非0 符号(+1 或–1)同极性的符号。显然,这样做可能破坏“极性交替反转”的规律。这个符号就称为破坏符号,用V 符号表示(即+1 记为 +V,-1记为–V)。为使附加V符号后的序列不破坏“极性交替反转”造成的无直流特性,还必须保证相邻V符号也应极性交替。这一点,当相邻符号之间有奇数个非0符号时,则是能得到保证的;当有偶数个非0符号时,则就得不到保证,这时再将该小段的第1个0变换成+B或-B符号的极性与前一非0符号的相反并让后面的非0符号从 V 符号开始再交替变化。

五.心得体会

计算机网络原理实验三 第3篇

一、《计算机网络原理》教学改革原因

1.《计算机网络原理》教学实践情况

计算机网络系列课程主要分为三部分:以网络原理为核心的课程, 如《计算机网络》等;以网络工程应用为主的课程, 如《网络设备与综合布线》等;以因特网应用为主的课程, 如《网络应用技术》等。《计算机网络》课程是基本原理课程, 是理解其他课程的基础。目前, 一些学校没有开设网络应用类课程, 而《计算机网络原理》课承担了部分网络应用类课程的内容。

目前的教学状况表现在第一, 计算机网络原理抽象、空洞、难以理解;第二, 只注重理论学习, 而忽略了实验课程的学习。第三, 书中附带的实验项目, 远远不能达到实际生活、工作的需求, 因此解决这些问题迫在眉睫。

2. 外地的实践与探索

浙江大学城市学院与D-Link认证与培训联系, 达成了合作意向, 决定引进新模式——共建“网络实验室”。在新模式下, 学院所有计算机专业以及非计算机专业学生的网络课程全部引入到合作培训体系中, 学生在学习原有的网络理论教学内容的同时, 实验课程全部采用D-Link认证与培训专业的实验体系。此举标志着一个全新的网络培训模式就此成型, 专业化的培训体系引入到高校的教学体系当中。

在经过半年的合作之后, 新培训模式的效果逐渐显现出来。因为开设网络实验课程之后, 有了实际动手的机会, 许多在学生看来看似繁杂的原理渐渐明朗。不少学生坦言:“网络实验加深了我们对原理的理解, 同时也加强了动手能力, 如今我们完全有能力组建一个小型的局域网, 无形中提升了我们走向市场的信心, 对于今后厂商的面试再也无所惧怕。”

3. 建立网络实验室的重要意义

作为一个实践性很强的课程, 网络实验是网络课程的重中之重, 虽然学生在课堂中学到三层交换协议、VLAN的划分等诸多网络原理, 但由于学校没有相应的网络演示环境, 导致学生没有机会进行实际的调试和操作, 许多原理对他们来说很难理解。因此, 必须高度重视、积极建立一个标准化的网络实验室, 尽快改变网络课程一直存在的理论与实践相脱节的现象。

二、计算机网络原理实验内容与方法的改革

1. 选用Cisco路由器

为什么要选择Cisco路由器和交换机?原因如下:

首先, Cisco公司推出了针对其产品的网络规划和网络支持工程师资格认证, Cisco公司的职业资格证书在国内外一向都有“通往高薪的直通车”的美誉, 其含金量为众多用人单位所重视。

其次, 在笔者所接触的一些服务外包培训中心, 都在培训如何使用Cisco路由器和交换机。这类的培训机构因为紧贴社会需求办学, 所以他们的授课内容在很大程度上反映了社会需求——许多单位都在使用Cisco公司的路由器和交换机。

2. 如何降低网络实验室成本

中国有句古话, 叫“巧妇难为无米之炊”, 学习网络更是这样, 没有路由器和交换机, 最终只能纸上谈兵。然而Cisco的路由器和交换机价格昂贵, 动辄几千元, 甚至几十万元, 若是配备的少, 也难以满足每位学生的动手需求, 若是配备到位, 又是一笔不小的开支。那么如何解决这一棘手难题呢?

在这里笔者要介绍一款经典的路由器和交换机的模拟软件Dynamips, 虽然以往也有很多款Cisco路由器和交换机的模拟软件, 甚至Cisco公司也针对其CCNA认证专门开发了一个用来设计、配置和故障排除的官方模拟软件Packet Tracer, 但从笔者使用情况看, Dynamips有很多优于其他模拟软件的地方。首先, Dynamips模拟的是路由器和交换机的硬件, 而其他的模拟软件都是同时模拟硬件和软件, 不仅功能受限, 而且BUG连连;其次, Dynamips模拟出的路由器和交换机可以与真实的网络互连, 甚至可以用于实际的生产环境, 而其他的模拟器却只是一个虚拟环境, 无法与真实的网络相连。

在实际教学过程中, Dynamips也有其优势, 它对计算机的要求不是很高。推荐的最低配置为:

学校的许多机房都能胜任。不需要另外配备新的机房。

3. 建立考核评价体系

实验的结果应该整理为书面形式, 这是加深理解、发现问题的最好方法。对于“做”这个层次, 结果应以实验报告的形式提交。报告的具体内容参考各层的具体实验要求, 但总体上要有以下内容:实验题目、实验内容说明、实验前准备情况、实验记录、实验结果分析。实验报告按照以上的格式, 要能够反映本次实验的成败得失和体会, 强调对实验过程和结果的讨论, 无论实验结果如何, 只要针对该结果进行认真的思考和合理的分析, 都会得到较好的成绩。这种考核方式, 使学生更注重理论与实验的综合运用, 并对平时的每一个实验过程都加以重视。

三、总结

通过以上对计算机网络原理教学模式和当前计算机网络原理实验的现状分析, 笔者认为需要改革现有的教学模式, 让授课内容、配套实验与实际生活、工作紧密结合。根据学校实际情况, 笔者认为可以采用经典路由器和交换机模拟软件Dynamips来进行实验教学, 并设置与之相应的实验内容和考核体系。希望能借此提高学生对计算机网络原理的理解和对网络实际配置的动手能力。

参考文献

[1]Andrew S.Tanenbaum.计算机网络[M].4版.潘爱民, 等译.北京:清华大学出版社, 2004.

计算机组成原理实验教学探索 第4篇

计算机原理实验总结 第5篇

通过学习这次的计算机原理实验课,我学到了很多东西。我基本上掌握了QuartusII 5.0软件的图形编辑、编译、仿真的设计流程。目前对74181、74182、74273、74244功能部件也比较了解。下面,我谈谈自己在实验中遇到的问题。

因为上学期在上数字与逻辑实验课的时候,对QuartusII 5.0软件已有了一定的了解,在第一次实验时,我对此软件运用的较熟练,但是还是遗忘了一些,于是请求了老师的指导。连线方面老师说最好用命名的方式,因为直接连线的话容易出错,不方便。命名数据和地址的时候,老师提醒过要用数组的形势,但是不知道为什么,在波形仿真的时候总是说出错了,经过我们的深入探讨,最终发现是我们的数组命名出错了,我们的做法是Q[15..0],Q1、Q2、Q3……正确的方法是Q[15..0],Q[1]、Q[2]、Q[3]……我们没有加中括号,这是我们第一次实验的主要问题,虽然是一个很简单的问题,但是却困扰了我们一节课。

第二次实验,我们提前来到了实验室,因为在上课前用自己的电脑准备过,所以此次试验进行的很顺利,但是还是在最后波形仿真的时候,结果就是和预想的不一样,我们百思不得其解,结果就这样浪费了很多时间,最后还是没有想出问题所在,便向老师求助。在老师的帮助下我们找到了错误的地方,原来在波形仿真的时候,给两个使能端有效的顺序反了,才导致了这一结果。之后改正错误,实验圆满结束。

自此之后的实验我们就得心应手了,没有什么大的问题出现,最终顺利完成了所有的实验。

计算机网络原理实验三 第6篇

一、实验目的

(1)将双端口通用寄存器组和双端口存储器模块联机;

(2)进一步熟悉计算机的数据通路;

(3)掌握数字逻辑电路中故障的一般规律,以及排除故障的一般原则和方法;

(4)锻炼分析问题与解决问题的能力,在出现故障的情况下,独立分析故障现象,并排除故障。

二、实验电路

图9.14示出了数据通路实验电路图,它是将前面进行的双端口存储器实验模块和一个双端口通用寄存器组模块连接在一起形成的,存储器的指令端口不参与本次实验,通用寄存器组连接运算器模块,本实验涉及其中的操作数寄存器DR2。

由于RAM是三态门输出,因而可以将RAM连接到数据总线BUS上。此外,BUS上还连接着双端口通用寄存器组。这样,写入RAM的数据可由通用寄存器提供,而从RAM读出的数据也可送到通用寄存器保存。

RAM和DR2在前面的实验中使用过。对于通用寄存器组RF,它由一个在系统可编程(In System Programable)芯片ispLSI 1016固化了通用寄存器组的功能而成,其功能与双端口寄存器组MC14580相类似,内含四个8位的通用寄存器,带有一个输入端口和两个输出端口,从而可以同时写入一路数据,读出两路数据。输入端口取名为WR端口,连接一个8位的缓冲寄存器ER(已集成在ispLSI 1016芯片中),输出端口取名为RS端口、RD端口,分别连接运算器模块的两个操作数寄存器DR1、DR2,其中,连接DR1的RS端口还可通过一个8位的三态门RSO直接向BUS输出。双端口通用寄存器组模块的控制信号中,RS1、RS0用于选择从RS端口读出的通用寄存器,RD1、RD0用于选择从RD端口读出的通用寄存器,上述选择信号在T1脉冲的上升沿到来时生效。而WR1、WR0则用于选择从WR端口写入的通用寄存器。WRD是写入控制信号,WRD=1时,在T2上升沿的时刻,从ER写入数据;WRD=0时,ER中的数据不写入通用寄存器中。LDER信号控制ER从BUS写入数据,RS-BUS信号则控制RS端口到BUS的输出三态门。以上控制信号各自连接一个二进制开关。

三、实验设备

(1)JYS-4计算机组成原理实验仪一台(2)双踪示波器一台(3)直流万用表一只(4)逻辑测试笔一支

四、实验任务

(1)将实验电路与操作面板的有关信号进行线路连接,方法同前面的实验。(2)用8位数据开关向RF中的四个通用寄存器分别置入以下数据(十六进制):R0=0F,R1=F0,R2=55,R3=AA。

给R0置入0F的步骤是:先用8位数码开关将0F置入ER,并且选择WR1=WR0=0,再将ER的数据置入RF。给其他通用寄存器置入数据的步骤与此类似。

(3)分别将R0至R3中的数据同时读入到DR2寄存器和BUS上,观察其数据是否存入R0至R3中的数据,并记录数据。其中BUS上的数据可直接用指示灯显示,DR2中的数据可用逻辑笔测试有关引脚。

(4)用8位数码开关向AR1送入一个地址0F,然后将R0中的0F写入RAM。用同样的方法,依次将R1至R3中的数据写入RAM中的F0、55、AA单元。

(5)分别将RAM中AA单元的数据写入R0,55单元的数据写入R1,F0单元写入R2,0F单元写入R3。然后将R3、R2、R1、R0中的数据读出到BUS上,通过指示灯验证读出的数据是否正确,并记录数据。

(6)进行RF并行输入输出试验。

1.选择RS端口对应R0,RD端口对应R1,WR端口对应R2,并使WRD=1,观察并行输入输出的结果。选择RS端口对应R2,验证刚才的写入是否生效。记录数据。2.保持RS端口和WR端口同时对应R2,WRD=1,而ER中置入新的数据,观察并行输入输出的结果,RS端口输出的是旧的还是新的数据?(7)在数据传送过程中,发现了什么故障?如何克服的?

五、实验要求(1)做好实验预习和准备工作,掌握实验电路的数据通路特点和通用寄存器组的功能特性。(2)写出实验报告,内容为

1.实验目的;

2.如碰到故障,记录故障现象,排除故障的分析思路,故障定位及故障的性质; 3.实验数据记录;

计算机组成原理--实验报告 第7篇

实验目的:了解模型机中各种寄存器结构、工作原理及其控制方法。

实验要求:利用CPTH 实验仪上的K16..K23 开关做为DBUS 的数据,其它开关做为控制信号,将数据写入寄存器,这些寄存器包括累加器A,工作寄存器W,数据寄存器组R0..R3,地址寄存器MAR,堆栈寄存器ST,输出寄存器OUT。

实验电路:寄存器的作用是用于保存数据的CPTH 用74HC574 来构成寄存器。74HC574 的功能如下:

系统清零和手动状态设定:K23-K16开关置零,按[RST]钮,按[TV/ME]键三次,进入“Hand......”手动状态。在后面实验中实验模式为手动的操作方法不再详述.

将55H写入A寄存器

二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据55H

置控制信号为:

按住STEP脉冲键,CK由高变低,这时寄存器A的黄色选择指示灯亮,表明选择A寄存器。放开STEP键,CK由低变高,产生一个上升沿,数据55H被写入A寄存器。将66H写入W寄存器

二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据66H

将11H、22H、33H、44H写入R0、R1、R2、R3寄存器将 二进制开关K23-K16,置数据分别为11H、22H、33H、44H 置控制信号为:

K11、K10为10,K1、k0分别为00、01、10、11

并分别按住STEP 脉冲键,CK 由高变低,这时寄存器R0、R1R2R3 的黄色选择指示灯分别亮,放开STEP键,CK由低变高,产生一个上升沿,数据被写入寄存器。注意观察:

1.数据是在放开STEP键后改变的,也就是CK的上升沿数据被打入。

2.K1(SB),K0(SA)用于选择寄存器。

读寄存器

置控制信号为:K11、K10为01,K1、K0为00时,读R0,这时寄存器R0 的红色输出指示灯亮,R0 寄存器的数据送上数据总线。此时数据总线指示灯L7...L0为:00010001.00110011.01000100.寄存器MAR原理图

连接线表 寄存器OUT原理图

寄存器MAR,ST,OUT写工作波形图

K14(MAROE)为0,MAR寄存器中的地址输出,MAR 红色输出指示灯亮。将K14(MAROE)置为1,关闭MAR输出。

将34H写入ST寄存器

二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据34H

置控制信号为:

按住STEP 脉冲键,CK 由高变低,这时寄存器ST 的黄色选择指示灯亮,表明选择ST 寄存器。放开STEP键,CK由低变高,产生一个上升沿,数据34H被写入ST 寄存器。将56H写入OUT寄存器

二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据56H

置控制信号为:

1实验电路:CPTH 中的运算器由一片CPLD实现,有8 种运算,通过S2,S1,S0 来选择,运算数据由寄存器A及寄存器W 给出,运算结果输出到直通门D。

连接线表

按住STEP脉冲键,CK由高变低,这时寄存器W 的黄色选择指示灯亮,表明选择W寄存器。放开STEP 键,CK 由低变高,产生一个上升沿,数据33H 被写入W 寄存器。

置下表的控制信号,检验运算器的运算结果

注意观察:

运算器在加上控制信号及数据(A,W)后,立刻给出结果,不须时钟。实验心得:

实验三

PC 实验

实验目的:

1、了解模型机中程序计数器PC的工作原理及其控制方法。

2、了解程序执行过程中顺序和跳转指令的实现方法。

PC 原理图

在CPTH 中,PC+1 由PCOE 取反产生。当RST = 0 时,PC 记数器被清0

当ELP=1 时,LDPC=1,不允许PC被预置 当ELP=0 时,LDPC 由IR3,IR2,Cy,Z确定 当IR3 IR2 = 1 X 时,LDPC=0,PC 被预置

当IR3 IR2 = 0 0 时,LDPC=非Cy,当Cy=1时,PC 被预置 当IR3 IR2 = 0 1 时,LDPC=非Z,当Z=1 时,PC 被预置 连接线表

每置控制信号后,按一下STEP键,观察PC的变化。

实验心得

实验四 存储器EM 实验

实验目的:了解模型机中程序存储器EM 的工作原理及控制方法。

实验要求:利用CPTH 实验仪上的K16..K23 开关做为DBUS 的数据,其它开关做为控制信号,实现程序存储器EM 的读写操作。实验电路:

存储器EM 由一片6116RAM 构成,是用户存放程序和数据的地方。存储器EM 通过一片74HC245 与数据总线相连。存储器EM 的地址可选择由PC或MAR 提供。

存储器EM 的数据输出直接接到指令总线IBUS,指令总线IBUS 的数据还可以来自一片74HC245。当ICOE 为0 时,这片74HC245 输出中断指令B8。

实验1:PC/MAR 输出地址选择

置控制信号为:

0,二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据01H 置控制信号为:

按STEP键, 将地址1 写入MAR

将数据22H写入EM[1] 二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据22H 置控制信号为:

按STEP键,将数据22H写入EM[1] 实验3:存储器EM 读实验 将地址0 写入MAR 二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据00H 置控制信号为:

按STEP键, 将地址0 写入MAR

5实验4:存储器打入IR指令寄存器/uPC实验 将地址0写入MAR 二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据00H

置控制信号为:

按STEP键,将地址0写入MAR

读EM[0],写入IR及uPC

置控制信号为:

EM[0]被读出:11H 按STEP键,将EM[0]写入IR及uPC,IR=11H,uPC=10H

7实验五 微程序存储器uM 实验

实验目的:

1、了解微程序控制方式模型机的基本工作原理。

2、了解微程序存储器uM的控制方法。实验要求:利用CPTH 实验仪上的开关做为控制信号,实现微程序存储器uM 的输出功能。

实验电路:

存储器uM 由三片6116RAM 构成,共24 位微指令,采用水平型微指令格式。存储器的地址由uPC 提供, 片选及读信号恒为低, 写信号恒为高.存储器uM 始终输出uPC 指定地址单元的数据。

uM原理图

连接线表

实验1:微程序存储器uM 读出

置控制信号为:K0为1

uM 输出uM[0]的数据

按一次STEP脉冲键,CK产生一个上升沿,数据uPC 被加一。uM 输出uM[1]的数据

按一次STEP脉冲键,CK产生一个上升沿,数据uPC 被加一。uM 输出uM[2]的数据

实验2:使用实验仪小键盘输入uM

1.连接J1, J2

2.打开电源

1实验六

计算机网络原理实验三 第8篇

1 实验现状及问题分析

在传统的课程体系下, 计算机网络原理课程的实验内容主要为交换、路由、协议分析等实验, 实验项目之间的关联不紧密, 详细的实验项目如表1所示。

从表1可看出, 实验项目之间的关联不大, 而且从交换路由开始做实验, 在学生对网络原理还不太熟悉的情况下, 对实验的目的不明确, 从而导致感觉实验内容很枯燥乏味没有兴趣。传统的实验安排不但不能很好的起到帮助学生理解网络原理的作用, 而且还会使学生对计算机网络原理课程失去学习兴趣。

计算机网络原理课程的目的在于使学生掌握计算机网络的工作原理, 这就需要网络实验围绕计算机网络协议的分析运行, 因为网络的工作过程就是通过网络协议数据包的不停转发实现的。而计算机网络协议本身是枯燥的, 如何能将枯燥的协议分析实验融入到对学生有吸引力的实验中就变得非常重要了。

2 实验内容改革

笔者根据多年的教学实践, 提出了一种全新的实验教学内容及教学模式, 将应用服务器的配置作为重点内容, 并与协议分析实验融入一起, 从而达到提高学生兴趣及学习主动性的目的。

2.1 搭建新的实验环境

为了提高实验项目的关联度, 通过设计一个综合实验项目, 使其他实验都融入该综合实验中。在该综合实验中包括交换机、路由器的基本配置、应用服务器的配置、计算机网络协议的分析等, 从而使各实验项目之间互相联系起来构成一个整体。新的实验环境搭建如图1所示。

2.2 新的实验项目设置

根据新搭建的网络实验环境及对实验项目的改革要求, 可将计算机网络原理课程实验项目设置为如表2所示。

该实验项目的设置弱化了路由交换类实验, 因为后续还有专门的路由交换课程可以针对性的学习路由交换部分的实验, 同时强化了应用服务器的配置类实验。应用服务器如DNS、DHCP、WWW、E-mail等都是日常生活中经常使用的, 几乎每个学生都使用过, 但绝大部分低年级的学生并不清楚这些服务器是如何搭建的, 所以通过设置大量应用服务器配置类的实验, 可以通过借助学生的好奇心从而达到吸引学生积极主动学习计算机网络原理课程的目的。

3 实验教学改革

完成实验项目设置后, 下一步就是如何能够让学生有效完成课程实验的问题了, 而目前二本院校的学生在学习过程中存在着大量的抄袭现象, 不管是作业还是实验报告经常出现雷同, 如何有效防止学生照搬照抄的现象成为普遍现象呢?可以通过改革教学模式促使学生必须自己独立完成作业, 而不能简单抄袭。将任务驱动的教学方法应用到计算机网络原理课程的实验教学中, 可以达到这个目的, 经过多年的实践教学验证, 取得了较好的教学效果。

任务驱动的教学模式就是要求学生根据任务独自完成实验项目, 教师不再给出详细的实验步骤, 而是明确该实验必须完成哪些功能, 至于如何规划IP地址及进行设备的相关配置等由学生通过查阅相关资料独立完成, 这样实验完成后每个同学的实验过程都不可能完全相同。为了防止学生实验雷同还可以将实验中用到的IP地址等与个人学号等信息绑定, 从而使每个同学都完成了相同的实验但看起来都有明显的差异。

为了提高实际教学效果, 任务驱动的教学模式需要经过任务的布置、学生对任务的理解、学生课下查阅资料完成任务、课堂学生讲解并演示实验、教师进行点评与补充等几个阶段。只有精心安排这几个阶段才能达到任务驱动教学模式应有的教学效果, 否则就会适得其反。

4 结语

计算机网络原理课程是计算机类专业的一门专业主干课程, 是理论与实践结合非常紧密的一门课程, 其中实验教学环节又是培养学生理论联系实际的重要途径。计算机网络原理课程实验教学改革中通过对实验项目的改革, 弱化了路由交换实验、同时强化了应用服务器配置实验, 起到了将计算机网络协议分析实验融入到学生感兴趣的实验项目中的目的。同时, 通过对实验教学模式的改革, 采用了基于任务驱动的实验教学模式, 使学生必须自主查询相关文献资料、独立完成实验, 从而提高了学生的学习主动性和分析解决问题的能力。经过多年的实践教学检验, 计算机网络原理课程实验项目的改革及实验教学模式的改革都起到了良好的教学效果。但是, 在提高学生的综合实验能力、激发学生的学习热情方面仍面临着许多挑战, 需要不断总结、探索和实践。

参考文献

[1]周国军.计算机网络课程实验教学改革探讨[J].计算机教育, 2016 (7) .

[2]肖明, 石泽顺.计算机网络实验课程的探索与改革[J].计算机教育, 2016 (4) .

[3]马婷婷.基于Cisco Packet Tracer的本科计算机网络工程实验教学改革[J].宜春学院学报, 2015 (9) .

[4]李荣茜, 徐辉.Wireshark协议分析技术在计算机网络课程实验中的应用[J].科技风, 2015 (17) .

计算机网络原理实验三 第9篇

关键词:实验模拟;计算机组成;面向对象

中图分类号:G642 文献标识码:A 文章编号:1673-8454(2012)03-0069-03

一、引言

“计算机组成原理”课程是计算机专业的一门核心专业必修课。该门课程的理论性、工程性、实践性都很强。因此,在搞好课堂教学的同时,必须对实验教学环节给予足够的重视。把实验教学看作是提高学生动手能力和实施素质教育的一个途径。目前,我校采用的是西安唐都科教仪器公司的TDN-CM+实验箱,在实验开展过程中,由于实验的理论知识综合、电路复杂、元器件多、连线密度高、操作步骤逻辑性强、调试困难等原因,都会造成获得预期实验结果的周期长或实验结果的失败,从而影响课堂时间内实验得出的效果,同时也影响了学生动手操作实验的积极性。

综上所述。本研究提出了面向对象的计算机组成原理实验的软件模拟,以面向对象的思想,借助于图形,图像和模拟技术,在计算机上实现计算机组成原理实验的基础实验环境、操作对象、操作过程,达到减少实验结果周期、降低实验操作过程出错率的研究目标。

二、系统模拟总体设计思想

计算机组成原理实验软件模拟系统主要包含输入模块、控制模块(实验处理模块)、输出模块,其中输入、输出模块是直观的显示模块,控制模块是由一个或若干个功能芯片组成的一个功能模块。因此,以面向对象的思想,可以将每个功能芯片设计成一个Public功能函数,然后在软件模型中直接调用一个或多个芯片的功能函数实现特定的控制模块功能。输入、输出模块相对简单,计算机组成原理实验输入、输出一般都以4~8位的二进制方式给出,为了更好地让学生理解二进制在计算机系统中的运算规则,设计采用以一个8位数组表示8位二进制的方法,通过算法来实现若干位二进制的逻辑运算与算术运算。模型模拟采用面向对象开发工具Delphi来实现。

三、建模过程

1.实验原理

计算机组成原理实验分为验证性实验与设计性实验,本研究为了更加具体地达到建模的效果,以计算机组成原理实验中的算术逻辑运算验证性实验为初步建模对象。

算术逻辑运算实验数据通路图如图1所示,主要包含两个74LS181芯片、两个74LS273芯片、一个74LS245芯片,74LS181芯片为8位字长的运算器,74LS273芯片为8位字长的数据暂存器,7413245芯片是一个三态门,用来控制总线上的数据输出。

算术逻辑运算实验的实验过程是通过输入开关形成2个8位二进制数分别置入DR1(74LS273芯片1),DR2(74LS273芯片2),然后通过改变运算器的控制位,观察运算器输出在总线的结果。

2.输入输出模块的模拟

算术逻辑运算实验的输入输出都通过8个发光二极管来显示,灯灭为1,灯亮为0,因此,可以从二极管位置定位与二极管显示状态控制,这两个方面来实现输入输出的模拟功能,二极管位置定位在Delphi开发平台中可以由数学函数Sqr函数来实现,二极管显示状态可以通过图像笔刷函数ImageDrawRound与ImageClearRound来实现。

第一步,通过图形设计工具PhotoShop设计8个二极管显示灯图片,如图2所示。在程序窗口中,通过Image控件来布置8个二极管图片,用坐标来定位某个二极管所在位置。在输入模块中,假设鼠标点击在窗口中的坐标为(X,Y),一个圆形二极管的图片半径为Z,那么可以根据第N个二极管坐标范围Sqr(X-N*z)+Sqr(Y-z)<=Sqr(z)来判断当前鼠标点击选中的是D7到DO当中的哪个二极管显示灯,通过鼠标动作事件转换当前二极管显示状态。显示灯区域坐标得到准确定位,就可以用Im-ageDrawRound函数与ImageClearRound函数控制显示灯的亮、灭状态,具体算法如程序代码清单1所示。

代码清单1:

if Sqr(X-Z)+Sqr(Y-Z)<=Sqr(Z)then ∥以第一个二极管举例

begin

if InputDR1[1]=1 then ∥二极管初始显示状态为灭时

begin ∥鼠标单击第一个二极管时,改变二极管显示为灯亮

InputDR1[1]:=0;

Image2DrawRound(0,0,25,25,clred);

end

else if InputDR1[1]=0 then ∥二极管初始显示状态为亮时

begin ∥鼠标单击第一个二极管时,改变二极管显示为灯灭

InputDR1[1]:=1;

Image2ClearRound(0,O,25,25);

end

end

同理,可设计输出模块中的显示灯模拟、控制模块中的控制灯模拟。在代码清单1中举例的是第一个二极管的输入显示控制,InputDR1表示一个数组,实现存储器DR1的存储功能,用来存放输入的第一个8位二进制数。

3.控制与运算模块的模拟

在算术逻辑运算实验中,分别由74LS181的控制位S3、S2、S1、S0、M、Cn来控制74LS181运算器的运算方式。控制位S3、S2、S1、S0、M、Cn也是一组二极管显示灯。可以用3.2输入输出模块模拟的设计思路实现。74LS181运算器的运算方式分为无进位算术运算、有进位算术运算、逻辑运算,分别通过6个控制位控制,参见表1所示,因此需要多个条件算法设计74LS181运算器芯片的功能。

74LS181逻辑功能总共有16种逻辑功能。因篇幅限制表1只列出一部分的功能。通过表1分析可知,A与B代表的是图2中InputDevice模块输入的2组8位二进制数,F是运算器的结果,在6个控制位的控制下,出现不同的运算规则。因此设计一个74LS181芯片的功能函数包含具有16种逻辑功能子过程,在软件模拟模型中得到TDN-CM+实验箱正确操作得到结果相一致,那就说明74LS181芯片软件模拟是可行的。

详细分析表1的运算规则。每组运算都是以下几个运算的组合:非运算、与运算、或运算、异或运算,根据它们的运算规则,可以设计如表2所示的程序算法达到对应运算的功能。

基于表2,结合表1,就可以根据控制位S3、S2、S1、SO、Cn、M的控制条件,设计出相对应的算术运算与逻辑运算的运算组合,然后把最终结果存储在一个输出数组中,最后通过3.2小节输入输出模块模拟的设计思路,把运算结果显示在总线上的8个二极管显示灯中,达到TDN-CM+实验箱的同等显示效果。

四、研究总结

本文通过计算机组成原理算术与逻辑运算实验的原理分析,以面向对象的思路,用图形/图像的可视方法进行了系统模拟。软件模拟模型在计算机组成原理课堂实验中辅助TDN-CM+实验箱操作实验起到了很好的作用,并且验证实验效果准确高效。在今后的研究中,以模拟具体实验为步骤,逐步完善整个TDN-CM+实验箱的模拟功能。

参考文献:

[1]周克峰,杨军,孙静,谢戈.计算机组成原理实验的模拟技术研究[J].云南民族大学学报,2004,13(3):236-240.

[2]杨小龙.计算机组成原理与系统结构实验教程[M].西安:西安电子科技大学出版社,2007.

[3]卢贤玲,杨艳,李景峰.计算机组成原理网上虚拟实验系统的建模与实现[J].郑州大学学报,2006,38(3):39-42.

[4]明日科技Delphi函数参考大全[M].北京:人民邮电出版社,2006.

[5]董玉德,赵韩,孙街亭.面向对象的程序设计方法与技术:Delphi语言[M].北京:清华大学出版社,2008.

[6]梁水,赛奎春.Delphi开发典型模块大全[M].北京:人民邮电出版社,2009.

上一篇:化妆品销售基本知识下一篇:中国奢侈品行业报告