中南大学 计算机体系结构实验报告

中南大学 计算机体系结构实验报告
中南大学 计算机体系结构实验报告

计算机体系结构

课程设计

学院: 信息科学与工程学院

专业班级:

指导老师:

学号:

姓名:

目录

实验 1 对指令操作码进行霍夫曼编码 (3)

一、实验目得 (3)

二、实验内容 (3)

三、设计思路 (4)

四、关键代码 (4)

五、实验截图 (5)

六、源代码 (5)

实验 2 使用 LRU 方法更新 Cache (8)

一、实验目得 (8)

二、实验内容 (8)

三、设计思路 (9)

四、程序截图 (9)

五、实验代码 (9)

实验总结 (16)

参考文献 (16)

实验 1 对指令操作码进行霍夫曼编码一、实验目得

了解与掌握指令编码得基本要求与基本原理

二、实验内容

1、使用编程工具编写一个程序,对一组指令进行霍夫曼编码,并输出最后得编码结果以及对指令码得长度进行评价。与扩展操作码与等长编码进行比较。

2、问题描述以及问题分析

举例说明此问题,例如:

下表所示:

对此组指令进行 HUFFMAN 编码正如下图所示:

最后得到得 HUFFMAN 编码如下表所示:

P1 P2 P3 P4 P5 P6 P7

0 10 110 1110 11110 111110 111111

H=0、45*1+0、30*2+0、15*3+0、05*4+0、03*5+0、01*6+0、01*6=-1、95、

要对指令得操作码进行 HUFFMAN 编码,只要根据指令得各类操作码得出现概率构造HUFFMAN 树再进行 HUFFAM 编码。此过程得难点构造 HUFFMAN 树,进行 HUFFAM 编

码只要对您所生成得 HUFFMAN 树进行中序遍历即可完成编码工作。

三、设计思路

观察上图 ,不难瞧出构造 HUFFMAN 树所要做得工作:1、先对各指令操作码得出现

概率进行排序,构造一个有序链表。2、再取出两个最小得概率节点相加,生成一个生得节点加入到链表中,同时从两表中删除此两个节点。3、在对链表进行排序,链表就是否只有一个节点,就是则 HUFFAN 树构造完毕,否则继续做 2 得操作。为此设计一个工作链表(链表得元素时类,此类得功能相当结构。)、HUFFMAN 树节点、HUFFMAN 编码表节点。

四、关键代码

哈夫曼树重点在于如何排列权值大小不同得结点得顺序

private int leafNum; //叶子结点个数private HaffmanNode[] hnodes; //哈夫曼树得结点

数组

public HaffManCode(double[] weight) //构造指定权值集合得哈夫曼树{

int n = weight、length; //n个叶子结点this、leafNum = n;

this、hnodes = new HaffmanNode[2*n-1]; //n个叶子结点得哈夫曼树共有2n-1个结点

for(int i=0; i

for(int i=0; i

double min1, min2; int x1, x2;

min1 = min2 = Integer、MAX_VALUE; //选择最小与次最小权值,初值为最大权值

x1 = x2 = -1; //记录两个无父母得最小权值结点下标for(int j=0; j

if(hnodes[j]、weight

min2 = min1;

x2 = x1;

min1 = hnodes[j]、weight; //min1记下最小权值

x1 = j; //x1记下最小权值结点得下标}

else if(hnodes[j]、weight

min2 = hnodes[j]、weight;

x2 = j;

//x2记下次最小权值结点得下标

}

}

五、实验截图

六、源代码

public class huffman {

private String str;

public huffman(String str){

this、str=str;

}

/**

* 创建节点类

* param args

*/

class Node{

Node left;

Node right;

int data;

char c;

}

/**

* 节点数组(字符串类)

* param args

*/

public void creatTree(){

//先去掉重复得字符串,若不存在将字符加在strRepeat中

String strRepeat="";

for(int i=0;i

char c=str、charAt(i);

//判断就是否存在

if(strRepeat、indexOf(c)==-1){ //找到字符位置并返回字符所在得位置strRepeat+=c;

}

}

//统计字符出现得次数并建立节点

Node[] nodes=new Node[strRepeat、length()]; //定义了一个nodes数组

//存储节点得坐标值

int s=0;

for(int i=0;i

char c=strRepeat、charAt(i);

int count=getCount(str,c); //c在string中出现得次数

Node node=new Node();

node、data=count;

node、c=c;

nodes[s++]=node;

}

//创建哈弗曼树

while(nodes、length>1){

Node node=new Node();

Node n1=nodes[0];

Node n2=nodes[1];

node、data=n1、data+n2、data;

node、left=n1;

node、right=n2;

//改变节点数组长度

Node[] nodes2=new Node[nodes、length-1];

for(int i=2;i

nodes2[i-2] = nodes[i];

}

nodes2[nodes2、length-1]=node;

nodes=nodes2;

}

Node root=nodes[0];

printCode(root,"");

}

/**

* 统计字符出现得次数 get方法

*/

private int getCount(String str,char c){

int count = 0;

for(int i=0;i

if(c==str、charAt(i))

count++;

}

return count;

}

/**

* 冒泡排序法

* param nodes

*/

public void sort(Node[] nodes){

for(int i=0;i

for(int j=i+1;j

if(nodes[i]、data>=nodes[j]、data){

//交换节点对象

Node temp=nodes[i];

nodes[i]=nodes[j];

nodes[j]=temp;

}

}

}

}

/**

* 打印编码

* param args

*/

public void printCode(Node node,String code){

if(node != null){

if(node、left==null && node、right==null)

System、out、println(node、c+"、、、"+node、data+"得编码就是: "+code);

printCode(node、left,code+""+0);

printCode(node、right,code+""+1);

}

}

public static void main(String[] args) {

String str="add bate";

huffman hf=new huffman(str);

hf、creatTree();

}

}

实验 2 使用 LRU 方法更新 Cache

一、实验目得

了解与掌握寄存器分配与内存分配得有关技术。

二、实验内容

LRU置换算法就是选择最近最久未使用得页面予以置换。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来经历得时间T,当须淘汰一个页面时,选择现有页面中T值最大得,即最近最久没有访问得页面。这就是一个比较合理得置换算法。举例说明此问题,例如: 有一个CACHE采用组相连映象方式。每组有四块,为了实现LRU置换算法,在快表中为每块设置一个2位计数器。我们假设访问序列为“1,1,2,4,3,5,2,1,6,7,1,3”。在访问CACHE得过程中,块得装入,置换及命中时,具体情况如下表所示:

三、设计思路

LRU 置换算法就是选择最近最久未使用得页面予以置换。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来经历得时间 T,当须淘汰一个页面时,选择现有

页面中 T 值最大得,即最近最久没有访问得页面。这就是一个比较合理得置换算法。

四、程序截图

五、实验代码

import java、awt、*;

import java、awt、event、*;

import javax、swing、*;

import javax、swing、table、*;

public class lru extends Frame {

public static void main(String[] args) {

JFrame、setDefaultLookAndFeelDecorated(true);

lru lruc = new lru();

lruc、lauchFrame();

}

JLabel jlabel2;

JTextField jtf2;

JButton jb_input;

JScrollPane jsp;

JTable jt;

DefaultTableModel dtm;

static int list = 1, count = list - 1;

int time1 = 0;

int time2 = 0;

int time3 = 0;

int time4 = 0;

public void lauchFrame() {

this、setLayout(null);

this、setBounds(100, 100, 540, 320);

//this、setBackground(Color、cyan);

this、setVisible(true);

jlabel2 = new JLabel("请输入第" + list + "个访问页面:");

jtf2 = new JTextField();

jb_input = new JButton("输入");

jlabel2、setBounds(20, 50, 140, 20);

jtf2、setBounds(155, 50, 50, 20);

jb_input、setBounds(240, 50, 60, 20);

this、add(jlabel2);

this、add(jtf2);

this、add(jb_input);

this、addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System、exit(0);

}

});

jb_input、addActionListener(new InputActionListener());

Object[] title = {"访问序列","Cache块0", "Cache块1", "Cache块2", "Cache块3", "状态"};

dtm = new DefaultTableModel(title, 0);

jt = new JTable(dtm);

jsp = new JScrollPane(jt);

jsp、setBounds(50, 80, 440, 197);

jsp、setBackground(Color、black);

this、add(jsp);

}

class InputActionListener implements ActionListener { //没有输入值,提示

public void actionPerformed(ActionEvent e) {

if(jtf2、getText()、equals("")) {

Object[] options = { "OK" };

JOptionPane、showOptionDialog(null, "输入错误,请按提示输入!", "警告", HZn6a

JOptionPane、DEFAULT_OPTION, JOptionPane、WARNING_MESSAGE,8oJtI

null, options, options[0]);

}

list++;

if(count < 4) {//count记录装入cache块得页面数

switch(count) {

case 0://cache块中没有装入页面得情况

dtm、addRow(new Object[]{jtf2、getText(), jtf2、getText(), "", "", "", "装入"});

time2++;

time3++;

time4++;

count++;

jtf2、setText("");

jlabel2、setText("请输入第" + list + "个访问页面:");

break;

case 1://cache块中装入一个页面得情况

if(jtf2、getText()、equals(jt、getValueAt(list-3, 1))) {//要访问得页面刚好在cache0中

dtm、addRow(new Object[]{jtf2、getText(), jt、getValueAt(list-3, 1), "", "", "", "命中"});

time2++;

time3++;

jtf2、setText("");

jlabel2、setText("请输入第" + list + "个访问页面:");

} else {//要访问得页面不在cache块中

dtm、addRow(new Object[]{jtf2、getText(), jt、getValueAt(list-3, 1), jtf2、getText(), "", "", "装入"});

time1++;

time2 = 0;

time3++;

time4++;

count++;

jtf2、setText("");

jlabel2、setText("请输入第" + list + "个访问页面:");

}

break;

case 2://cache块中装入两个页面得情况

if(jtf2、getText()、equals(jt、getValueAt(list-3, 1))) {//要访问得页面刚好在cache0中

dtm、addRow(new Object[]{jtf2、getText(), jt、getValueAt(list-3, 1), jt、getValueAt(list-3, 2), "", "", "命中"});

time1 =0;

time2++;

time3++;

time4++;

jtf2、setText("");

jlabel2、setText("请输入第" + list + "个访问页面:");

} else if(jtf2、getText()、equals(jt、getValueAt(list-3, 2))) {//要访问得页面刚好在cache1中

dtm、addRow(new Object[]{jtf2、getText(), jt、getValueAt(list-3, 1), jt、getValueAt(list-3, 2), "", "", "命中"});

time1++;

time2 = 0;

time4++;

jtf2、setText("");

jlabel2、setText("请输入第" + list + "个访问页面:");

} else {//要访问得页面不在cache块中

dtm、addRow(new Object[]{jtf2、getText(), jt、getValueAt(list-3, 1), jt、getValueAt(list-3, 2), jtf2、getText(), "", "装入"});

time1++;

time2++;

time3 =0;

time4++;

count++;

jtf2、setText("");

jlabel2、setText("请输入第" + list + "个访问页面:");

}

break;

case 3://cache块中装入三个页面得情况

if(jtf2、getText()、equals(jt、getValueAt(list-3, 1))) {//要访问得页面刚好在cache0中

dtm、addRow(new Object[]{jtf2、getText(), jt、getValueAt(list-3, 1), jt、getValueAt(list-3, 2), jt、getValueAt(list-3, 3), "", "命中"});

time1 = 0;

time2++;

time3++;

time4++;

jtf2、setText("");

jlabel2、setText("请输入第" + list + "个访问页面:");

} else if(jtf2、getText()、equals(jt、getValueAt(list-3, 2))) {//要访问得页面刚好在cache1中

dtm、addRow(new Object[]{jtf2、getText(), jt、getValueAt(list-3, 1), jt、getValueAt(list-3, 2), jt、getValueAt(list-3, 3), "", "命中"});

time1++;

time3++;

time4++;

jtf2、setText("");

jlabel2、setText("请输入第" + list + "个访问页面:");

} else if(jtf2、getText()、equals(jt、getValueAt(list-3, 3))) {//要访问得页面刚好在cache2中

dtm、addRow(new Object[]{jtf2、getText(), jt、getValueAt(list-3, 1), jt、getValueAt(list-3, 2), jt、getValueAt(list-3, 3), "", "命中"});

time1++;

time2++;

time3 = 0;

time4++;

jtf2、setText("");

jlabel2、setText("请输入第" + list + "个访问页面:");

}

else {//要访问得页面不在cache块中

dtm、addRow(new Object[]{jtf2、getText(), jt、getValueAt(list-3, 1), jt、getValueAt(list-3, 2), jt、getValueAt(list-3, 3), jtf2、getText(), "装入"});

time1++;

time2++;

time3++;

time4 = 0;

count++;

jtf2、setText("");

jlabel2、setText("请输入第" + list + "个访问页面:");

}

break;

}

} else {//四个cache块都装满得情况

if(jtf2、getText()、equals(jt、getValueAt(list-3, 1))) {//要访问得页面刚好

在cache0中

dtm、addRow(new Object[]{jtf2、getText(), jt、getValueAt(list-3, 1), jt、getValueAt(list-3, 2), jt、getValueAt(list-3, 3), jt、getValueAt(list-3, 4), "命中"});

System、out、println(1);

time1 = 0;

time2++;

time3++;

time4++;

jtf2、setText("");

jlabel2、setText("请输入第" + list + "个访问页面:");

} else if(jtf2、getText()、equals(jt、getValueAt(list-3, 2))) {//要访问得页面刚好在cache1中

dtm、addRow(new Object[]{jtf2、getText(), jt、getValueAt(list-3, 1), jt、getValueAt(list-3, 2), jt、getValueAt(list-3, 3), jt、getValueAt(list-3, 4), "命中"});

System、out、println(2);

time1++;

time2 = 0;

time3++;

time4++;

jtf2、setText("");

jlabel2、setText("请输入第" + list + "个访问页面:");

} else if(jtf2、getText()、equals(jt、getValueAt(list-3, 3))) {//要访问得页面刚好在cache2中

dtm、addRow(new Object[]{jtf2、getText(), jt、getValueAt(list-3, 1), jt、getValueAt(list-3, 2), jt、getValueAt(list-3, 3), jt、getValueAt(list-3, 4), "命中"});

System、out、println(3);

time1++;

time2++;

time3 = 0;

time4++;

jtf2、setText("");

jlabel2、setText("请输入第" + list + "个访问页面:");

} else if(jtf2、getText()、equals(jt、getValueAt(list-3, 4))) {//要访问得页面刚好在cache3中

dtm、addRow(new Object[]{jtf2、getText(), jt、getValueAt(list-3, 1), jt、getValueAt(list-3, 2), jt、getValueAt(list-3, 3), jt、getValueAt(list-3, 4), "命中"});

System、out、println(4);

time1++;

time2++;

time3++;

time4 = 0;

jtf2、setText("");

jlabel2、setText("请输入第" + list + "个访问页面:");

}

else {//要访问得页面不在cache块中

if(time1>time2 && time1>time3 && time1>time4) {//如果cache0得页面最长时间没有被访问,新页面置换cache0中页面

dtm、addRow(new Object[]{jtf2、getText(), jtf2、getText(), jt、getValueAt(list-3, 2), jt、getValueAt(list-3, 3), jt、getValueAt(list-3, 4), "置换"});

time1 = 0;

time2++;

time3++;

time4++;

jtf2、setText("");

jlabel2、setText("请输入第" + list + "个访问页面:");

} else if(time2>time1 && time2>time3 && time2>time4) {//如果cache1得页面最长时间没有被访问,新页面置换cache1中页面

dtm、addRow(new Object[]{jtf2、getText(), jt、getValueAt(list-3, 1), jtf2、getText(), jt、getValueAt(list-3, 3), jt、getValueAt(list-3, 4), "置换"});

time1++;

time2 = 0;

time3++;

time4++;

jtf2、setText("");

jlabel2、setText("请输入第" + list + "个访问页面:");

} else if(time3>time1 && time3>time2 && time3>time4) {//如果cache2得页面最长时间没有被访问,新页面置换cache2中页面

dtm、addRow(new Object[]{jtf2、getText(), jt、getValueAt(list-3, 1), jt、getValueAt(list-3, 2), jtf2、getText(), jt、getValueAt(list-3, 4), "置换"});

time1++;

time2++;

time3 = 0;

time4++;

jtf2、setText("");

jlabel2、setText("请输入第" + list + "个访问页面:");

} else if(time4>time1 && time4>time2 && time4>time3) {//如果cache3得页面最长时间没有被访问,新页面置换cache3中页面

dtm、addRow(new Object[]{jtf2、getText(), jt、getValueAt(list-3, 1), jt、getValueAt(list-3, 2), jt、getValueAt(list-3, 3), jtf2、getText(), "置换"});

time1++;

time2++;

time3++;

time4 = 0;

jtf2、setText("");

jlabel2、setText("请输入第" + list + "个访问页面:");

}

}

}

}

}

}

实验总结

体系结构属于计算机整个得结构,涉及计算机得整个结构,从底层到高层,每层得原理,

结构及实现,就是一门比较抽象得学科,通过这次得几个实验,让我对计算机得编码与页面得替换算法有了更深层次得理解。计算机就是一门理论性很强得学科,但就是实际得操作又就是必不可少得。实践可以加深对课程得理解,也能提高编程能力,总之,通过这次实验,我学到了很多。

参考文献

[1] 郑纬民汤志忠计算机系统结构清华大学出版社 2002

[2] 余腊生计算机系统结构实验指导书中南大学信息科学与工程学院制定

中南大学计算机体系结构实验报告

计算机体系结构实验报告 学院:信息科学与工程学院 专业班级:高赛文的小仙女 指导老师:雷向东 姓名:igot7

目录 实验 1 对指令操作码进行霍夫曼编码 (3) 一、实验目的 (3) 二、实验内容 (3) 三、实验过程 (3) 四、实验结果 (14) 实验 2 使用 LRU 方法更新 Cache (15) 一、实验目的 (15) 二、实验内容 (15) 三、实验过程 (15) 四、实验结果 (18) 实验 3 通道处理过程模拟 (20) 一、实验目的 (20) 二、实验内容 (20) 三、实验过程 (21) 四、实验结果 (22) 实验 4 单功能流水线调度机构模拟 (23) 一、实验目的 (23) 二、实验内容 (23) 三、实验过程 (23) 四、运行结果 (24) 实验总结 (24)

实验 1 对指令操作码进行霍夫曼编码 一、实验目的 1.了解和掌握指令编码的基本要求和基本原理 二、实验内容 1.使用编程工具编写一个程序,对一组指令进行霍夫曼编码,并输出最后的编码结果以及对 指令码的长度进行评价。与扩展操作码和等长编码进行比较。 问题描述以及问题分析: 我们举例说明此问题,例如: 有一组指令的操作码共分七类,它们出现概率如 下表所示: P1 P2 P3 P4 P5 P6 P7 0.45 0.30 0.15 0.05 0.03 0.01 0.01 对此组指令进行HUFFMAN 编码正如下图所示: 最后得到的HUFFMAN 编码如下表所示: 最短编码长度为: H=0.45*1+0.30*2+0.15*3+0.05*4+0.03*5+0.01*6+0.01*6=-1.95. 要对指令的操作码进行HUFFMAN 编码,只要根据指令的各类操作码的出现概率构造HUFFMAN 树再进行HUFFAM 编码。此过程的难点构造HUFFMAN 树,进行HUFFAM 编码只要对你所生成的HUFFMAN 树进行中序遍历即可完成编码工作。 三、实验过程 观察上图 1,不难看出构造 HUFFMAN 树所要做的工作:

中南大学通信原理实验报告(截图完整)

中南大学 《通信原理》实验报告 学生姓名 指导教师 学院 专业班级 完成时间

数字基带信号 1、实验名称 数字基带信号 2、实验目的 (1)了解单极性码、双极性码、归零码、不归零码等基带信号波形特点。 (2)掌握AMI、HDB 3 码的编码规则。 (3)掌握从HDB 3 码信号中提取位同步信号的方法。 (4)掌握集中插入帧同步码时分复用信号的帧结构特点。 (5)了解HDB 3 (AMI)编译码集成电路CD22103。 3、实验内容 (1)用示波器观察单极性非归零码(NRZ)、传号交替反转码(AMI)、三阶高密度双极性码 (HDB 3)、整流后的AMI码及整流后的HDB 3 码。 (2)用示波器观察从HDB 3 码中和从AMI码中提取位同步信号的电路中有关波形。 (3)用示波器观察HDB 3 、AMI译码输出波形。 4、基本原理(简写) 本实验使用数字信源模块和HDB 3 编译码模块。 1、数字信源 本模块是整个实验系统的发终端,模块内部只使用+5V电压,其原理方框图如图1-1所示,电原理图如图1-3所示(见附录)。本单元产生NRZ信号,信号码速率约为170.5KB,帧结构如图1-2所示。帧长为24位,其中首位无定义,第2位到第8位是帧同步码(7位巴克码1110010),另外16位为2路数据信号,每路8位。此NRZ信号为集中插入帧同步码时分复用信号,实验电路中数据码用红色发光二极管指示,帧同步码及无定义位用绿色发光二极管指示。发光二极管亮状态表示1码,熄状态表示0码。 本模块有以下测试点及输入输出点: ? CLK 晶振信号测试点 ? BS-OUT 信源位同步信号输出点/测试点(2个) ? FS 信源帧同步信号输出点/测试点 ? NRZ-OUT(AK) NRZ信号(绝对码)输出点/测试点(4个) 图1-1中各单元与电路板上元器件对应关系如下: ?晶振CRY:晶体;U1:反相器7404 ?分频器U2:计数器74161;U3:计数器74193;U4:计数器40160 ?并行码产生器K1、K2、K3:8位手动开关,从左到右依次与帧同步码、数

操作系统实验报告-中南大学

操作系统原理试验报告 班级: 学号: 姓名:

实验一:CPU调度 一、实验内容 选择一个调度算法,实现处理机调度。 二、实验目的 多道系统中,当就绪进程数大于处理机数时,须按照某种策略决定哪些进程优先占用处理机。本实验模拟实现处理机调度,以加深了解处理机调度的工作。 三、实验题目 1、设计一个按优先权调度算法实现处理机调度的程序; 2、设计按时间片轮转实现处理机调度的程序。 四、实验要求 PCB内容: 进程名/PID; 要求运行时间(单位时间); 优先权; 状态: PCB指针; 1、可随机输入若干进程,并按优先权排序; 2、从就绪队首选进程运行:优先权-1/要求运行时间-1 要求运行时间=0时,撤销该进程 3、重新排序,进行下轮调度 4、最好采用图形界面; 5、可随时增加进程; 6、规定道数,设置后备队列和挂起状态。若内存中进程少于规定道数,可自动从后备 队列调度一作业进入。被挂起进程入挂起队列,设置解挂功能用于将指定挂起进程解挂入就绪队列。 7、每次调度后,显示各进程状态。 实验二:内存管理 一、实验内容 主存储器空间的分配和回收 二、实验目的 帮助了解在不同的存储管理方式下,应怎样实现主存空间的分配和回收。 三、实验题目 在可变分区管理方式下,采用最先适应算法实现主存空间的分配和回收。

四、实验要求 1、自行假设主存空间大小,预设操作系统所占大小并构造未分分区表; 表目内容:起址、长度、状态(未分/空表目) 2、结合实验一,PCB增加为: {PID,要求运行时间,优先权,状态,所需主存大小,主存起始位置,PCB指针} 3、采用最先适应算法分配主存空间; 4、进程完成后,回收主存,并与相邻空闲分区合并 .1、Vo类说明(数据存储结构) 进程控制块PCB的结构: Public class PCB{ //进程控制块PCB,代表一个进程 //进程名,作为进程的标识; private String name; //要求运行时间,假设进程运行的单位时间数; private int time; //赋予进程的优先权,调度时总是选取优先数小的进程先执行; private int priority; //状态,假设有“就绪”状态(ready)、“运行”状态(running)、 //“后备”状态(waiting)、“挂起”状态(handup) private String state; //进程存放在table中的位置 private int start; //进程的大小 private int length; //进程是否进入内存,1为进入,0为未进入 private int isIn; //进程在内存中的起始位置 private int base; //进程的大小 private int limit; //一些get和set方法以及构造器省略… };

岩石力学-硕士研究生课程报告-中南大学

硕士研究生课程报告 题目顺层高边坡稳定性影响因素 及工程灾害防治 姓名曾义 专业班级岩土13级 任课教师阳军生张学民 中南大学土木工程学院

引言 近年来,随着铁路公路建设步伐加快,铁路公路等级不断提高,边坡防护建设工程中所遇到的岩土边坡安全稳定性问题也相应增多,并成为岩土工程中比较常见的技术难题。由于工程建设的需要,往往在一定程度上破坏或扰动原来较为稳定的岩土体而形成新的人工边坡,因而普遍存在着边坡稳定的问题需要解决。国家实施西部大开发战略以来,西部山区高等级公路得到迅速发展。在山区修建高等级公路不可避免会遇到大量的深挖高填路基,就目前建设的高速公路情况看:一般情况下,100km长的山区高等级公路,挖填方路基段落长度占路线总长度的60%以上。已建高速公路最高的填方已达到50多米,最高的挖方边坡高度已超过100m。尽管山区高等级公路的建设越来越倡导环境保护,尽量避免深挖高填,但路基作为公路的主要结构,其边坡稳定问题不可避免。在山区复杂多变的地质条件下建设高等级公路,其边坡稳定性问题必将受到人们的普遍关注,高边坡岩土安全状况直接关系到公路交通运输安全。 虽然计算理论方法、地质探测技术、现代监测技术、边坡加固技术及施工技术不断的在进步,但顺层边坡稳定性问题和高边坡稳定性问题,时至今日依然是国内外学者研究的热点问题,并逐步涌现出许多的新的研究方向。 1、顺倾高边坡稳定性研究现状 随着人类工程活动的发展,对边坡问题的研究也在不断深入,归纳前人对边坡问题的研究大致可分为以下几个阶段: 人们对边坡稳定性的关注和研究最早是从滑坡现象开始的(张倬元等,2001)。19世纪末和20世纪初期,伴随着欧美资本主义国家的工业化而兴起的大规模土木工程建设(如修筑铁路、公路,露天采矿,天然建材开采等),出现了较多的人工边坡,诱发了大量滑坡和崩塌,造成了很大的损失。这时,人们才开始重视边坡失稳给人类造成的危害,并开始借用一般材料分析中的工程力学理论对滑坡进行半经验、半理论的研究。 20世纪50年代,我国学者引进苏联工程地质的体系,继承和发展了“地质历史分析”法,并将其应用于滑坡的分析和研究中,对边坡稳定性研究起到了推动作用(张倬元等,1994)。该阶段学者们着重边坡地质条件的描述和边坡类型的划分,采用工程地质类比法评价边坡稳定性。 20世纪60年代,世界上几起灾难性的边坡失稳事件的发生(如意大利的瓦依昂滑坡造成近3000人死亡和巨大的经济损失)(张倬元等,1994),使人们逐渐认识到了结构面对边坡稳定性的控制作用以及边坡失稳的时效特征,初步形

计算机图形学实验报告 (2)

中南大学信息科学与工程学院 实验报告实验名称 实验地点科技楼四楼 实验日期2014年6月 指导教师 学生班级 学生姓名 学生学号 提交日期2014年6月

实验一Window图形编程基础 一、实验类型:验证型实验 二、实验目的 1、熟练使用实验主要开发平台VC6.0; 2、掌握如何在编译平台下编辑、编译、连接和运行一个简单的Windows图形应用程序; 3、掌握Window图形编程的基本方法; 4、学会使用基本绘图函数和Window GDI对象; 三、实验内容 创建基于MFC的Single Document应用程序(Win32应用程序也可,同学们可根据自己的喜好决定),程序可以实现以下要求: 1、用户可以通过菜单选择绘图颜色; 2、用户点击菜单选择绘图形状时,能在视图中绘制指定形状的图形; 四、实验要求与指导 1、建立名为“颜色”的菜单,该菜单下有四个菜单项:红、绿、蓝、黄。用户通过点击不同的菜单项,可以选择不同的颜色进行绘图。 2、建立名为“绘图”的菜单,该菜单下有三个菜单项:直线、曲线、矩形 其中“曲线”项有级联菜单,包括:圆、椭圆。 3、用户通过点击“绘图”中不同的菜单项,弹出对话框,让用户输入绘图位置,在指定位置进行绘图。

五、实验结果: 六、实验主要代码 1、画直线:CClientDC *m_pDC;再在OnDraw函数里给变量初始化m_pDC=new CClientDC(this); 在OnDraw函数中添加: m_pDC=new CClientDC(this); m_pDC->MoveTo(10,10); m_pDC->LineTo(100,100); m_pDC->SetPixel(100,200,RGB(0,0,0)); m_pDC->TextOut(100,100); 2、画圆: void CMyCG::LineDDA2(int xa, int ya, int xb, int yb, CDC *pDC) { int dx = xb - xa; int dy = yb - ya; int Steps, k; float xIncrement,yIncrement; float x = xa,y= ya; if(abs(dx)>abs(dy))

2017中南大学人工智能实验报告

“人工智能”实验报告 专业: 班级: 学号: 姓名: 2017年4月日

实验一搜索策略 (一)实验内容 1. 熟悉和掌握启发式搜索的定义、估价函数和算法过程;比较不同算法的性能。 2. 修改八数码问题或路径规划问题的源程序,改变其启发函数定义,观察结果的变化,分析原因。 (二)实验思路 1.利用已有程序“search.jar”,利用已有的“简单搜索树”图或自行构建一个图,选择DFS/BFS/Lowest Cost First/Best-First/Heuristic Depth First/A*等不同的搜索策略,观察程序运行中,OPEN表和CLOSED表的变化,观察搜索过程的变化,理解各个算法的原理。 2.任选八数码问题或路径规划问题的源程序,思考程序如何解决该问题,并对其启发函数进行修改,观察结果的变化,并分析原因 (三)程序清单 此处我选择了路径规划问题:由于篇幅原因,只附上启发函数的定义部分。 原启发函数: floatMapSearchNode::GoalDistanceEstimate( MapSearchNode&nodeGoal ) { floatxd = fabs(float(((float)x - (float)nodeGoal.x))); floatyd = fabs(float(((float)y - (float)nodeGoal.y))); return (xd + yd); } 第一次修改后的启发函数: float MapSearchNode::GoalDistanceEstimate( MapSearchNode&nodeGoal ) { float xd = fabs(float(((float)x - (float)nodeGoal.x))); float yd = fabs(float(((float)y - (float)nodeGoal.y))); float d=sqrt(xd*xd+yd*yd); return d; } 第二次修改后的启发函数: float MapSearchNode::GoalDistanceEstimate( MapSearchNode&nodeGoal ) { float xd = fabs(float(((float)x - (float)nodeGoal.x))); float yd = fabs(float(((float)y - (float)nodeGoal.y))); float d=3*sqrt(xd*xd+yd*yd); return d; } 第三次修改后的启发函数: float MapSearchNode::GoalDistanceEstimate( MapSearchNode&nodeGoal ) { float xd = fabs(float(((float)x - (float)nodeGoal.x)));

中南大学工程训练报告15

自动化工程训练 —基于MATLAB的电力电子系统仿真 学院:信息科学与工程学院 仿真内容:三相桥式整流电路 班级姓名:自动化0801 肖娉 学号:0909080320 指导老师:桂武鸣老师 日期:2011.08.29--2011.09.09

电力电子技术综合了电子电路、电机拖动、计算机控制等多学科知识,是一门实践性和应用性很强的课程。由于电力电子器件自身的开关非线性,给电力电子电路的分析带来了一定的复杂性和困难,一般常用波形分析的方法来研究。仿真技术为电力电子电路的分析提供了崭新的方法。 本次工程训练的目的是初步掌握在MA TLAB/Simulink环境下电力电子系统的仿真。通过为期两周的学习,掌握一些MA TLAB的基础、Simulink环境和模型库、电力电子器件模型、变压器和电动机模型等。 MATLAB是一种科学计算软件,它是一种以矩阵为基础的交互式程序计算语言。SIMULINK是基于框图的仿真平台,它挂接在MATLAB环境上,以MATLAB的强大计算功能为基础,以直观的模块框图进行仿真和计算。 本文主要以MATLAB/SIMULINK仿真软件为基础,完成了对三相桥式整流电路带电阻、阻感、反电动势、直流电机负载的建模与仿真,并且给出了仿真结果波形,同时根据仿真结果进行了分析。证实了该方法的简便直观、高效快捷和真实准确性。

前言 第一章MATLAB/Simulink仿真的目的与意义 (1) 第二章MATLAB/Simulink的基础知识 (2) 2.1 MATLAB基础 (2) 2.1.1 MATLAB语言的功能 (2) 2.2.2 MATLAB集成环境 (3) 2.2 Simulink仿真基础 (5) 2.2.1 Simulink的模块库介绍 (6) 2.2.2 SimPowerSystems的介绍 (6) 2.2.3 Simulink部分模型介绍 (7) 2.2.4 Simulink仿真运行 (8) 第三章三相桥式可控整流电路的仿真 (10) 3.1 三相桥式整流电路 (10) 3.1 电阻、阻感和反电动势负载 (11) 3.2 直流电机负载 (16) 3.2.1 整流状态 (16) 3.2.2 有源逆变状态 (18) 第四章心得体会 (21) 参考文献 (23)

中南大学机械基础实验报告机类

机械基础实验报告 (机械类) 中南大学机械基础实验教学中心 2011年8月 目录 训练一机构运动简图测绘 (1) 实验二动平衡实验 (3) 实验三速度波动调节实验 (4) 实验四机构创意组合实验 (5) 实验五平面机构创新设计及运动测试分析实验 (6) 实验六螺栓联接静动态实验 (7) 实验七螺旋传动效率实验 (8) 实验八带传动实验 (9) 实验九液体动压轴承实验 (10) 实验十机械传动性能综合测试实验 (12) 实验十一滚动轴承综合性能测试分析实验 (13) 实验十二机械传动设计及多轴搭接实验 (14) 实验十三减速器拆装实验 (15)

训练一机构运动简图测绘 专业班级第组姓名成绩 1.一个正确的“机构运动简图”应能说明哪些内容?绘制机构运动简图的基本步骤是什么? 2.机构自由度与原动件的数目各为多少?当机构自由度=原动件的数目,机构的

运动是否确定? 五.收获与建议

实验二动平衡实验 专业班级第组姓名成绩一、实验目的: 二?设备名称: 三?实验数据 实验转速: 四.思考题: 转子动平衡为什么要在左右两个平面上进行平衡?

实验三速度波动调节实验专业班级第组姓名成绩一?实验目的: 二?设备名称: 三?实验数据 1?当转速不变时,采用不同的飞轮,数据记录: 结论:当转速不变时,飞轮转动惯量越大,则机构的速度波动越二?当飞轮不变时,转速变化,数据记录: 结论:当飞轮不变时,转速越大,则机构的速度波动越

实验四机构创意组合实验 专业班级第组姓名成绩 一、机构运动简图(要求符号规范标注参数) 二、机构的设计方案图(复印件) 三、机构有____________个活动构件?有______个低副,其中转动副_______个, 移动副__________个,有____________复合铰链,在_________处?有________处?有__________个虚约束,在__________处? 四、机构自由度数目为F=3n-2PL-PH=3X-2X-0= 五、机构有_________个原动件 在___________处用__________驱动,在__________处用___________驱动? 六、针对原设计要求,按照实验结果简述机构的有关杆件是否运动到位?曲柄是 否存在?是否实现急回特性?最小传动角数值?是否有“卡住”现象?(原无要求的项目可以不作涉及) 七、指出在机构中自己有所创新之处? 八、指出机构的设计存在的不足之处,简述进一步改进的设想?

中南大学硕士研究生培养方案(科学学位)

硕士研究生培养方案(科学学位) 一、学科概况 中南大学机械工程学科创建于1955年,1960年招收研究生,1982年获得硕士学位授予权,1986年获博士学位授予权,1998年设立“机械工程”博士后科研流动站,2000年获得一级学科博士授予权,覆盖了机械制造及自动化、机械设计及理论、机械电子工程和车辆工程等4个二级学科和数字装备与计算制造、信息器件制造技术与装备等2个自主设置的二级学科,其中“机械设计及理论”与“机械制造及其自动化”学科为国家重点学科,“机械制造及其自动化”与“机械电子工程”学科为湖南省重点学科,机械工程一级学科于2007年被批准为一级学科国家重点学科。设有“高性能复杂制造”国家重点实验室,“现代复杂装备设计与极端制造”教育部重点实验室,“铝合金强流变技术与装备”教育部工程研究中心,湖南省“岩土设备设计与控制”工程研究中心,以及“金属塑性加工摩擦与润滑”、“设备测试与故障诊断中心”等1个国家重点实验室和5个省部级重点实验室、工程中心,以及国家高技术研究发展计划成果产业化基地、与国外ASM公司共建的“微电子封装技术实验室”等。 本学科致力于机械基础理论与技术集成、先进制造理论与技术等的研究,并围绕国民经济中起支柱作用以及国防和空天运载等关键技术与装备进行研究和

设计开发,在高性能材料制备与装备、信息器件制造、齿轮数字化制造、深海资源开发、车辆与工程装备、特种机器人等研究方向具有特色和优势。 二、培养目标 学位获得者应拥护中国共产党的领导,拥护社会主义制度,热爱祖国,掌握辩证唯物主义和历史唯物主义的基本原理;具有良好的科研作风、科学道德和合作精神,品行优秀,身心健康;掌握机械工程学科坚实的基础理论、系统的专门知识,掌握一定的生产实践及试验方面的知识和技能,熟练掌握一门外语,了解本学科前沿发展动态和方向,有严谨求实的工作作风和独力工作能力。成为既能从事机械工程领域的科学研究与设计工作,又可承担相关领域的教学和管理工作的高层次、高素质的科技人才。 三、学科专业主要研究方向

微机原理及应用实验报告

微机原理及应用实验报告 班级:机械1301班 姓名:黄佳清 学号:0801130117 座位号: 中南大学机电工程学院

实验一单片机仿真开发机操作和MCS-51指令系统应用 一.实验目的 1、熟悉MCS-51单片机仿真开发机和开发调试软件的操作使用和调整; 2、学会编写和输入汇编语言源程序、对输入的源程序进行汇编; 3、掌握程序的调试和运行的各种方法。 三.实验内容及步骤(完成分值:60分) 本实验秩序运行Keil uVersion2程序,设置为keil为纯软件仿真 1.新建工程项目 2.设置工程文件参数 3.编写新程序事例 4.调试程序直至能够运行出结果。 四.实验程序 AJMP MAIN ORG 0030H MAIN: MOV R0,#20H MOV R2,#0FH MOV A,#00H A1: MOV @R0,A INC R0 INC A DJNZ R2,A1 MOV R0,#20H ;暂停,观察并记录! MOV DPTR,#7000H MOV R2,#0FH A2: MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR DJNZ R2,A2 MOV R0,#030H ;断点,观察并记录! MOV DPTR,#7000H MOV R2,#0FH A3: MOVX A,@DPTR MOVX @R0,A INC R0 INC DPTR DJNZ R2,A3 DO: LJMP DO END ;内部存储器数据块赋值,搬运数据块到外部存储器,再搬运回内部数据存储器。 五、附加题 1.将光标移到想要暂停的地方,MOV R0,#20H所在行,选择“执行到光

中南大学制造系统自动化技术实验报告整理

制造系统自动化技术 实验报告 学院:机电工程学院 班级:机制**** 姓名:张** 学号: *********** 指导教师:李** 时间: 2018-11-12 实验一柔性自动化制造系统运行实验 1.实验目的 (1)通过操作MES终端软件,实现对柔性制造系统的任务下达和控制加工,让学生

了解智能制造的特征及优势。 (2)通过创意性的实验让学生了解自动化系统总体方案的构思。 (3)通过总体方案的构思让学生了解该系统的工作原理,并学会绘制控制系统流程图,掌握物料流、信息流、能量流的流动路径。 (4)通过总体方案的构思让学生掌握各机械零部件、传感器、控制元器件的工作原理及性能。 (5)通过实验系统运行让学生了解运行的可靠性、安全性是采用何种元器件来实现的,促进学生进行深层次的思考和实践。 2.实验内容 (1)仔细观察柔性自动化制造系统的实现,了解柔性自动化制造系统的各个模块,熟悉各个模块的机械结构。 (2)了解各种典型传动机构的组装、工作原理、以及如何实现运动方向和速度的改变; (3)学习多种传感器的工作原理、性能和使用方法; (4)了解典型驱动装置的工作原理、驱动方式和性能; (5)理解柔性制造系统的工作原理,完成柔性制造系统的设计、组装; (6)实现对柔性制造系统的控制与检测,完成工件抓取、传输和加工。

3.实验步骤 (1)柔性制造系统的总体方案设计; (2)进行检测单元的设计; (3)进行控制系统的设计; (4)上下料机构的组装与检测控制; (5)物料传输机构的组装与实现; (6)柔性制造系统各组成模块的连接与控制; (7)柔性制造系统各组成单元的状态与工件状态位置的检测; (8)对机器人手动操作,实现对工件的抓取、传输。 4. 实验报告 ①该柔性自动化制造系统由哪几个主要的部分组成; 主要由:总控室工作站、AGV小车输送物料机构、安川机器人上下料工作站、法那科机器人上下料工作站、ABB机器人组装工作站、视觉检测及传送工作站、激光打标工作站、堆垛机及立体仓储工作站。 ②画出该柔性自动化制造系统的物料传输系统结构简图;

计算数学排名

070102 计算数学 计算数学也叫做数值计算方法或数值分析。主要内容包括代数方程、线性代数方程组、微分方程的数值数值逼近问题,矩阵特征值的求法,最优化计算问题,概率统计计算问题等等,还包括解的存在性、唯一性差分析等理论问题。我们知道五次及五次以上的代数方程不存在求根公式,因此,要求出五次以上的高次代一般只能求它的近似解,求近似解的方法就是数值分析的方法。对于一般的超越方程,如对数方程、三角方采用数值分析的办法。怎样找出比较简洁、误差比较小、花费时间比较少的计算方法是数值分析的主要课题的办法中,常用的办法之一是迭代法,也叫做逐次逼近法。迭代法的计算是比较简单的,是比较容易进行的以用来求解线性方程组的解。求方程组的近似解也要选择适当的迭代公式,使得收敛速度快,近似误差小。 在线性代数方程组的解法中,常用的有塞德尔迭代法、共轭斜量法、超松弛迭代法等等。此外,一些比消去法,如高斯法、追赶法等等,在利用计算机的条件下也可以得到广泛的应用。在计算方法中,数值逼近本方法。数值逼近也叫近似代替,就是用简单的函数去代替比较复杂的函数,或者代替不能用解析表达式表值逼近的基本方法是插值法。 初等数学里的三角函数表,对数表中的修正值,就是根据插值法制成的。在遇到求微分和积分的时候,的函数去近似代替所给的函数,以便容易求到和求积分,也是计算方法的一个主要内容。微分方程的数值解法。常微分方程的数值解法由欧拉法、预测校正法等。偏微分方程的初值问题或边值问题,目前常用的是有限元素法等。有限差分法的基本思想是用离散的、只含有限个未知数的差分方程去代替连续变量的微分方程求出差分方程的解法作为求偏微分方程的近似解。有限元素法是近代才发展起来的,它是以变分原理和剖分的方法。在解决椭圆形方程边值问题上得到了广泛的应用。目前,有许多人正在研究用有限元素法来解双曲方程。计算数学的内容十分丰富,它在科学技术中正发挥着越来越大的作用。 排名学校名称等级 1 北京大学A+ 2 浙江大学 A+ 3 吉林大学A+ 4 大连理工大学A+ 5 西安交通大学A 北京大学:http:https://www.360docs.net/doc/4015976842.html,/NewsSpecialDetailsInfo.aspx?SID=4 浙江大学:http:https://www.360docs.net/doc/4015976842.html,/NewsSpecialDetailsInfo.aspx?SID=21847 吉林大学:http:https://www.360docs.net/doc/4015976842.html,/NewsSpecialDetailsInfo.aspx?SID=5506 大连理工大学:http:https://www.360docs.net/doc/4015976842.html,/NewsSpecialDetailsInfo.aspx?SID=4388 西安交通大学:http:https://www.360docs.net/doc/4015976842.html,/NewsSpecialDetailsInfo.aspx?SID=18285

中南大学机械制造工艺学实验报告

机械制造工艺学实验报告 班级机械1301 姓名黄佳清 学号 07

中南大学机电学院 《机械制造工艺学》课程实验报告 实验名称:加工误差的统计分析 姓名:黄佳清班级:机械1301 学号: 07 实验日期: 2015 年 10 月 18 日指导教师:成绩: 1. 实验目的 (1)掌握加工误差统计分析方法的基本原理和应用。 (2)掌握样本数据的采集与处理方法,要求:能正确地采集样本数据,并能通过对样本 数据的处理,正确绘制出加工误差的实验分布曲线和图。 (3)能对实验分布曲线和图进行正确地分析,对加工误差的性质、工序能力及工艺 稳定性做出准确的鉴别。 (4)培养对加工误差进行综合分析的能力。 2. 实验内容与实验步骤

1.按加工顺序测量工件的加工尺寸,记录测量结果。 2.绘制直方图和分布曲线 1)找出这批工件加工尺寸数据的最大值x max和最小值x min,按下式计算出极差R。 R=x max一x min 2)确定分组数K(K一般根据样本容量来选择,建议可选在8~11之间)。 3)按下式计算组距 d。 4)确定组界(测量单位:微米)。 5)做频数分布表。 6)计算x和 。 7)画直方图 以样本数据值为横坐标,标出各组组界;以各组频率密度为纵坐标,画出直方图。 8)画分布曲线 若工艺过程稳定,则误差分布曲线接近正态分布曲线;若工艺过程不稳定,则应根据实际情况确定其分布曲线。画出分布曲线,注意使分布曲线与直方图协调一致。 9)画公差带 在横轴下方画出公差带,以便与分布曲线相比较。 3.绘制图 1)确定样组容量,对样本进行分组

样组容量m 通常取4或5件。按样组容量和加工时间顺序,将样本划分成若干个样组。 2)计算各样组的平均值和极差 对于第i 个样组,其平均值和极差计算公式为: ∑==m j ij i x m x 1 1 式中 ——第i 个样组的平均值; ——第i 个样组的标准差; ——第i 个样组第j 个零件的测量值; ——第i 个样组数据的最大值; ——第i 个样组数据的最小值 3)计算图控制限(计算公式见实验原理) 4)绘制 图 以样组序号为横坐标,分别以各样组的平均值和极差R 为纵坐标,画出图,并在图上标出中心线和上、下控制限。 4. 按下式计算工序能力系数Cp 5. 判别工艺过程稳定性 可按下表所列标准进行判别。注意,同时满足表中左列3个条件,工艺过程稳定;表中右列条件之一不满足,即表示工艺过程不稳定。

算法实验报告

算法分析与设计实验报告 学院:信息科学与工程学院 专业班级: 指导老师: 学号: 姓名:

目录 实验一:递归与分治 (3) 1.实验目的 (3) 2.实验预习内容 (3) 3.实验内容和步骤 (3) 4.实验总结及思考 (5) 实验二:回溯算法 (6) 1.实验目的: (6) 2.实验预习内容: (6) 3. 实验内容和步骤 (6) 4. 实验总结及思考 (9) 实验三:贪心算法和随机算法 (10) 1. 实验目的 (10) 2.实验预习内容 (10) 3.实验内容和步骤 (10) 4. 实验总结及思考 (13)

实验一:递归与分治 1.实验目的 理解递归算法的思想和递归程序的执行过程,并能熟练编写快速排序算法程序。 掌握分治算法的思想,对给定的问题能设计出分治算法予以解决。 2.实验预习内容 递归:递归算法是把问题转化为规模缩小了的同类问题的子问题。然后递归调用函数(或过程)来表示问题的解。 一个过程(或函数)直接或间接调用自己本身,这种过程(或函数)叫递归过程(或函数). 分治:分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。 3.实验内容和步骤 快速排序的基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 源代码: #include using namespace std; int num; void swap(int &a,int &b) { int temp=a; a=b; b=temp; } void printarray(int *arr) { for (int i=1;i<=num;++i) cout<

中南大学计算机取证技术实验报告

学院:信息科学与工程学院 班级: 学号: 姓名: 指导老师:张健

目录 目录 ------------------------------------------------------------------------------------------------------------------ 0 实验一事发现场收集易失性数据-------------------------------------------------------------------------- 1 实验二磁盘数据映像备份---------------------------------------------------------------------------------- 6 实验三恢复已被删除的数据------------------------------------------------------------------------------ 10 实验四进行网络监听和通信分析------------------------------------------------------------------------- 15 实验五分析Windows系统中隐藏的文件和Cache信息 --------------------------------------------- 19 实验六数据解密 ------------------------------------------------------------------------------------------------ 25 总结 ----------------------------------------------------------------------------------------------------------------- 27

中南大学 计算机体系结构实验报告

计算机体系结构课程设计 学院:信息科学与工程学院 专业班级: 指导老师: 学号: 姓名:

目录 实验1 对指令操作码进行霍夫曼编码 (3) 一、实验目的 (3) 二、实验内容 (3) 三、设计思路 (4) 四、关键代码 (4) 五、实验截图 (5) 六、源代码 (5) 实验2 使用LRU 方法更新Cache (8) 一、实验目的 (8) 二、实验内容 (8) 三、设计思路 (9) 四、程序截图 (9) 五、实验代码 (9) 实验总结 (16) 参考文献 (16)

实验1 对指令操作码进行霍夫曼编码一、实验目的 了解和掌握指令编码的基本要求和基本原理 二、实验内容 1. 使用编程工具编写一个程序,对一组指令进行霍夫曼编码,并输出最后的编码结果以及对指令码的长度进行评价。与扩展操作码和等长编码进行比较。 2. 问题描述以及问题分析 举例说明此问题,例如: 下表所示: 对此组指令进行 HUFFMAN 编码正如下图所示: 最后得到的HUFFMAN 编码如下表所示:

最短编码长度为: H=0.45*1+0.30*2+0.15*3+0.05*4+0.03*5+0.01*6+0.01*6=-1.95. 要对指令的操作码进行 HUFFMAN 编码,只要根据指令的各类操作码的出现概率构造HUFFMAN 树再进行 HUFFAM 编码。此过程的难点构造 HUFFMAN 树,进行 HUFFAM 编 码只要对你所生成的 HUFFMAN 树进行中序遍历即可完成编码工作。 三、设计思路 观察上图,不难看出构造 HUFFMAN 树所要做的工作:1、先对各指令操作码的出现概率进行排序,构造一个有序链表。2、再取出两个最小的概率节点相加,生成一个生的节点加入到链表中,同时从两表中删除此两个节点。3、在对链表进行排序,链表是否只有一个节点,是则 HUFFAN 树构造完毕,否则继续做 2 的操作。为此设计一个工作链表(链表的元素时类,此类的功能相当结构。)、HUFFMAN 树节点、HUFFMAN 编码表节点。 四、关键代码 哈夫曼树重点在于如何排列权值大小不同的结点的顺序 private int leafNum; //叶子结点个数 private HaffmanNode[] hnodes; //哈夫曼树的结点数组 public HaffManCode(double[] weight) //构造指定权值集合的哈夫曼树 { int n = weight.length; //n个叶子结点 this.leafNum = n; this.hnodes = new HaffmanNode[2*n-1]; //n个叶子结点的哈夫曼树共有2n-1个结点 for(int i=0; i

数值分析练习1-3章

第一章 绪论 一、填空题 1、 已知 71828.2e =,求x 的近似值a 的有效数位和相对误差: 题号 精确数x x 的近似数a a 的有效数位 a 的相对误差 ⑴ e 2.7 ⑵ e 2.718 ⑶ e/100 0.027 ⑷ e/100 0.02718 2、 设原始数据x 1,x 2,x 3和x 4的近似值(每位均为有效数字)如下: a 1=1.1021,a 2=0.031,a 3=385.6,a 4=56.430 则 ⑴ a 1+a 2+a 4= ,相对误差界为 ; ⑵ a 1a 2a 3= ,相对误差界为 ; ⑶ a 2/a 4= ,相对误差界为 。 二、为使20的近似值的相对误差小于0.01%,问应取多少位有效数字? 三、当x 接近于0时,怎样计算 x x sin cos 1-以及当x 充分大时,怎样计算 x x -+1,才会使其结果的有效数字不会严重损失。 四、在数值计算中,为了减小误差,应该尽量避免的问题有哪些?并举出相 应的实例. 五、对于序列 ,1,0,9991 =+=? n dx x x I n n ,试构造两种递推算法计算 10I ,在你构造的算法中,那一种是稳定的,说明你的理由;

第二章 插值法 1、在互异的n+1个点处满足插值条件P(x i )=y i ,(i=0,1,…n)的次数不高于n 的 多项式是( )的 (A)存在且唯一 (B)存在 (C)不存在 (D)不唯一 2、当f(x)是次数不超过n 的多项式时,f(x)的插值多项式是 ( ) (A)不确定 (B)次数为n (C)f(x)自身 (D )次数超过n 3、 插值基函数的和 ∑=n j j x l )(= ( ) (A)0 (B)1 (C)2 (D)不确定 4、 设f(x)=x 3-x+5,则f[20,21,22,23]= ( ); f[20,21,22,23,24]= ( ) (A)0 (B)1 (C)2 (D)不确定 5、( )插值方法具有公式整齐、程序容易实现的优点,而( )插值方法 计算灵活,如果节点个数变化时,不需要重新构造多项式,它们都是( )的方法 (A)构造性 (B)解方程组 (C)拉格朗日 (D)牛顿 6、一般地,内插公式比外推公式( ),高次插值比低次插值( ),但 当插值多项式的次数高于七、八次时,最好利用( )插值公式 (A)粗糙 (B)精确 (C)分段低次 (D)高次 7、整体光滑度高,收敛性良好,且在外型设计、数值计算中应用广泛的分 段插值方法为( ). (A)分段线性插值 (B)分段抛物插值 (C)分段三次埃尔米特插值 (D)三次样条插值。 8、差商与差分的关系式为 f[x 0,x 1,…,x k ]=( ),f[x n ,x n-1,…,x n-k ]=( )。 (A)k n k h k f !? (B)k k h k f !0? (C)k n k h k f !? (D)k k h k f !0 ?

中南大学微机原理及接口技术实验内容及报告要求

中南大学微机原理及接口技术实验内容及报告要求 一、实验内容: 实验一顺序程序设计与DEBUG使用 题目1.利用串操作传送指今将0FFH送入数据段的0180H开始的128个字节存储单元中,编写一段程序。 题目2.将数据段中0200H字节存储单元中的二位BCD码转换为二个ASCII码送0201H 开始的二个字节单元中,编写—段程序。 题目3.编写一段程序,在内存中自SQTAB(0200H)地址开始的连续十个单元中存放0~9的平方值。要求利用计算法查表求 NUM(0210H)单元中指定数(0~9中的任意一数)的平方值,并将所求平方值存入RESULT(0211H)单元中。 [注]:题目二和题目三可选做一个,题目一必做。 详细实验要求及步骤方法,参见“ DEBUG 实验参考” 实验二键盘、显示程序设计实验(教材P30) 提高部分: 1、显示数据输入提示信息、键盘输入一个字符,屏幕显示字符的ASCⅡ码; 2、显示字符串输入提示信息、键盘输入一个字符串,屏幕显示对应字符串中各字符的ASC Ⅱ码。 实验三数据传送、数码转换程序设计实验(教材P33、35) 提高部分: 1、数据传送,完成20个数据的传送,并对附加段数据进行升序排列,并在屏幕上显示排序后的数据,以及最大数据和最小数据。 2、数据转换,键盘输入2位(或以上)十进制数,分别转换成十六进制数、BCD码、七段共阳极码。 实验四运算类程序设计实验(教材P39) 提高部分:键盘输入5位被减数和减数,计算并以恒等式形式显示在屏幕上(允许被减数< 减数)。 实验五基本I/O接口与地址译码电路设计实验(教材P72、75) 提高部分: 1、在“基本I/O接口电路设计实验”中,如何扩展16路输入、输出功能? 2、在“地址译码电路设计实验”中,将Y6与CS_A、Y7与CS_B,改换成 Y0与CS_A、Y1 与CS_B连接,修改程序并实现实验功能。 实验六 8255接口电路设计实验(教材P95) 提高部分:

相关文档
最新文档