当前位置:文档之家› 实验4 简单CPU设计与仿真

实验4 简单CPU设计与仿真

实验4 简单CPU设计与仿真
实验4 简单CPU设计与仿真

预做实验报告4简单CPU设计与仿真

一、实验目的

理解并掌握CPU的基本电路结构及其设计方法,学会使用Verilog HDL对电路进行行为建模、结构建模以及仿真测试。

二、实验内容

利用Verilog HDL设计一个简单的CPU模型,并进行仿真测试。

要求该处理机能够实现下列指令系统:

31262521201615540指令000000rd rs1rs2and rd,rs1,rs2 000001rd rs1imme andi rd,rs1,imme 000010rd rs1rs2or rd,rs1,rs2 000011rd rs1imme ori rd,rs1,imme 000100rd rs1rs2add rd,rs1,rs2 000101rd rs1imme addi rd,rs1,imme 000110rd rs1rs2sub rd,rs1,rs2 000111rd rs1imme subi rd,rs1,imme 001000rd rs1imme load rd,rs1,imme 001001rd rs1imme store rd,rs1,imme 001010disp bne disp

001011disp beq disp

001100disp branch disp 要求把指令的执行分为以下5个步骤,每个步骤用一个时钟周期。

1、取指令及PC+1周期

2、指令译码、读寄存器及转移周期

3、ALU执行或者存储器地址计算周期

4、ALU指令结束周期或者存储器访问周期

5、写回周期

三、实验环境

PC机1台、Modelsim仿真软件1套。

四、实验步骤

1、电路结构设计与逻辑设计

多周期处理机的总体电路图

P C

寄存器堆ALU

A

B

ZERO 存储器Addres s

Dataou t Detain CS

OE

WE WRITEMEM

ALUOP

ZERO

WRITEZERO

M U X

M U X M U X

1

偏移量符号扩展

立即数符号扩展

WRITEREG DI AD A1

A2Q2

Q1

SELLOAD

SELST

偏移量

立即数

Rd rs1rs2Rd

WRITEPC

M U X

I R

M U X

SELLDST

SELALUA

SELALUB

A

B IM WRITEIR

ZERO

OPCODE 控制部件

控制信

2、建立Verilog 模型

module TOP(clk,rst,start,memwe,memin,memaddr,zero,n,v,c,dataout);input clk,rst,start,memwe;input [31:0]memin;input [4:0]memaddr;output [31:0]dataout;output n,v,c,zero;wire clk,rst;

wire writepc,selldst,writemem,writeir,selload,selst,writereg,selalua,writezero;wire [5:0]opcode;

wire [1:0]aluop,selalub;wire zero;datapath

u0(writepc,selldst,writemem,writeir,selload,selst,writereg,selalua,selalub,aluop,w ritezero,clk,rst,memin,memaddr,memwe,zero,n,v,c,opcode,dataout);control

u1(clk,start,zero,opcode,writepc,selldst,writemem,writeir,selload,selst,writereg,se lalua,selalub,aluop,writezero);endmodule

module

datapath(writepc,selldst,writemem,writeir,selload,selst,writereg,selalua,selalub,al

ZERO

uop,writezero,clk,rst,memin,memaddr,memwe,zero,n,v,c,opcode,dataout); input

writepc,selldst,writemem,writeir,selload,selst,writereg,selalua,writezero,clk,rst,m emwe;

input[1:0]selalub,aluop;

input[4:0]memaddr;

input[31:0]memin;

output zero,n,v,c;

output[5:0]opcode;

output[31:0]dataout;

wire[4:0]pcout,address,memaddr,mux3out;

wire[31:0]memin,mux4out,mux5out,imme,disp;

wire memwe,zero1;

wire[31:0]dataout,Q1,datain,irout,f,aluout;

pc pc1(pcout,aluout[4:0],writepc,clk,rst);

mux21_5mux1(address,pcout,aluout[4:0],selldst);

memory

mem(dataout,datain,address,writemem,memin,memaddr,memwe,clk,rst);

//memin,memaddr,memweê??aá??ú??′??÷?Dê?è?êy?Y??ó?

ir ir1(irout,dataout,clk,rst,writeir);

mux21_32mux2(f,aluout,dataout,selload);

mux21_5mux3(mux3out,irout[4:0],irout[25:21],selst);

registerfile

registerfile(Q1,datain,f,clk,rst,writereg,irout[25:21],irout[20:16],mux3out); mux21_32mux4(mux4out,Q1,{27'b0,pcout},selalua);

assign

imme={irout[15],irout[15],irout[15],irout[15],irout[15],irout[15],irout[15],irout[1 5],irout[15],irout[15],irout[15],irout[15],irout[15],irout[15],irout[15],irout[15],iro ut[15:0]};

assign

disp={irout[25],irout[25],irout[25],irout[25],irout[25],irout[25],irout[25:0]}; mux41_32mux5(mux5out,datain,imme,32'd1,disp,selalub);

ALU alu1(aluop,mux4out,mux5out,aluout,n,v,c,zero1);

dff zeroflag(zero,zero1,clk,rst,writezero);

assign opcode=irout[31:26];

endmodule

module

control(clk,start,zero,opcode,writepc,selldst,writemem,writeir,selload,selst,writer eg,selalua,selalub,aluop,writezero);

input clk,start,zero;

input[5:0]opcode;

output writepc,selldst,writemem,writeir,selload,selst,writereg,selalua,writezero;

output[1:0]selalub,aluop;

reg[3:0]q;

wire[3:0]d;

wire zero;

always@(posedge clk)

begin

if(start)

q<=4'd0;

else

q<=d;

end

assign

d[0]=(~q[3]&~q[2]&~q[1]&~q[0])|((~q[3]&~q[2]&~q[1]&q[0])&(~opcode[3]&op code[0]))|((~q[3]&~q[2]&~q[1]&q[0])&(opcode[3]&~opcode[2]&~opcode[1]&op code[0]))|(~q[3]&~q[2]&q[1]&q[0])|(~q[3]&q[2]&~q[1]&q[0]);

assign

d[1]=((~q[3]&~q[2]&~q[1]&q[0])&(~opcode[3]&~opcode[0]))|((~q[3]&~q[2]&~q [1]&q[0])&(~opcode[3]&opcode[0]))|(~q[3]&~q[2]&q[1]&~q[0])|(~q[3]&~q[2]& q[1]&q[0])|(q[3]&~q[2]&~q[1]&~q[0]);

assign

d[2]=((~q[3]&~q[2]&~q[1]&q[0])&(opcode[3]&~opcode[2]&~opcode[1]&~opcod e[0]))|((~q[3]&~q[2]&~q[1]&q[0])&(opcode[3]&~opcode[2]&~opcode[1]&opcod e[0]))|(~q[3]&~q[2]&q[1]&~q[0])|(~q[3]&~q[2]&q[1]&q[0]);

assign

d[3]=(~q[3]&q[2]&~q[1]&~q[0])|(~q[3]&q[2]&~q[1]&q[0])|(q[3]&~q[2]&~q[1]& ~q[0]);

assign

writepc=(~q[3]&~q[2]&~q[1]&~q[0])|((~q[3]&~q[2]&~q[1]&q[0])&((opcode[3]& opcode[2]&~opcode[1]&~opcode[0])|(opcode[3]&~opcode[2]&opcode[1]&~opco de[0]&~zero)|(opcode[3]&~opcode[2]&opcode[1]&opcode[0]&zero)));

assign

selldst=(~q[3]&q[2]&~q[1]&~q[0])|(~q[3]&q[2]&~q[1]&q[0])|(q[3]&~q[2]&~q[1] &~q[0])|(q[3]&~q[2]&~q[1]&q[0])|(q[3]&~q[2]&q[1]&~q[0]);

assign writemem=q[3]&~q[2]&~q[1]&q[0];

assign writeir=~q[3]&~q[2]&~q[1]&~q[0];

assign

selload=(~q[3]&q[2]&~q[1]&~q[0])|(q[3]&~q[2]&~q[1]&~q[0])|(q[3]&~q[2]&q[1] &~q[0]);

assign selst=(~q[3]&q[2]&~q[1]&q[0])|(q[3]&~q[2]&~q[1]&q[0]);

assign

writereg=(~q[3]&q[2]&q[1]&~q[0])|(~q[3]&q[2]&q[1]&q[0])|(q[3]&~q[2]&q[1] &~q[0]);

assign selalua=(~q[3]&~q[2]&~q[1]&~q[0])|(~q[3]&~q[2]&~q[1]&q[0]); assign selalub[1]=(~q[3]&~q[2]&~q[1]&~q[0])|(~q[3]&~q[2]&~q[1]&q[0]);

assign

selalub[0]=(~q[3]&~q[2]&~q[1]&q[0])|(~q[3]&~q[2]&q[1]&q[0])|(~q[3]&q[2]&~ q[1]&~q[0])|(~q[3]&q[2]&~q[1]&q[0])|(~q[3]&q[2]&q[1]&q[0])|(q[3]&~q[2]&~q [1]&~q[0])|(q[3]&~q[2]&~q[1]&q[0])|(q[3]&~q[2]&q[1]&~q[0]);

assign writezero=(~q[3]&q[2]&q[1]&~q[0])|(~q[3]&q[2]&q[1]&q[0]);

assign

aluop[1]=(~q[3]&~q[2]&~q[1]&~q[0])|(~q[3]&~q[2]&~q[1]&q[0])|((~q[3]&~q[2] &q[1]&~q[0])&(~opcode[3]&opcode[2]))|((~q[3]&~q[2]&q[1]&q[0])&(~opcode[ 3]&opcode[2]))|(~q[3]&q[2]&~q[1]&~q[0])|(~q[3]&q[2]&~q[1]&q[0])|((~q[3]&q[

2]&q[1]&~q[0])&(~opcode[3]&opcode[2]))|((~q[3]&q[2]&q[1]&q[0])&(~opcode[

3]&opcode[2]))|(q[3]&~q[2]&~q[1]&~q[0])|(q[3]&~q[2]&~q[1]&q[0])|(q[3]&~q[ 2]&q[1]&~q[0]);

assign

aluop[0]=((~q[3]&~q[2]&q[1]&~q[0])&(~opcode[3]&opcode[1]))|((~q[3]&~q[2] &q[1]&q[0])&(~opcode[3]&opcode[1]))|((~q[3]&q[2]&q[1]&~q[0])&(~opcode[3] &opcode[1]))|((~q[3]&q[2]&q[1]&q[0])&(~opcode[3]&opcode[1])); endmodule

module memory(dataout,datain,address,we,memin,memaddr,memwe,clk,reset); output[31:0]dataout;

input[31:0]datain,memin;

input[4:0]address,memaddr;

input clk,reset,we,memwe;

wire we1;

wire[4:0]address1;

wire[31:0]decoderout;

wire[31:0]regen;

wire[31:0]datain1;

wire[31:0]

q0,q1,q2,q3,q4,q5,q6,q7,q8,q9,q10,q11,q12,q13,q14,q15,q16,q17,q18,q19,q20,q21, q22,q23,q24,q25,q26,q27,q28,q29,q30,q31;

assign address1=memwe?memaddr:address;

assign datain1=memwe?memin:datain;

decoder dec0(decoderout,address1);

assign we1=we|memwe;

assign regen[0]=decoderout[0]&we1;

assign regen[1]=decoderout[1]&we1;

assign regen[2]=decoderout[2]&we1;

assign regen[3]=decoderout[3]&we1;

assign regen[4]=decoderout[4]&we1;

assign regen[5]=decoderout[5]&we1;

assign regen[6]=decoderout[6]&we1;

assign regen[7]=decoderout[7]&we1;

assign regen[8]=decoderout[8]&we1;

assign regen[9]=decoderout[9]&we1; assign regen[10]=decoderout[10]&we1; assign regen[11]=decoderout[11]&we1; assign regen[12]=decoderout[12]&we1; assign regen[13]=decoderout[13]&we1; assign regen[14]=decoderout[14]&we1; assign regen[15]=decoderout[15]&we1; assign regen[16]=decoderout[16]&we1; assign regen[17]=decoderout[17]&we1; assign regen[18]=decoderout[18]&we1; assign regen[19]=decoderout[19]&we1; assign regen[20]=decoderout[20]&we1; assign regen[21]=decoderout[21]&we1; assign regen[22]=decoderout[22]&we1; assign regen[23]=decoderout[23]&we1; assign regen[24]=decoderout[24]&we1; assign regen[25]=decoderout[25]&we1; assign regen[26]=decoderout[26]&we1; assign regen[27]=decoderout[27]&we1; assign regen[28]=decoderout[28]&we1; assign regen[29]=decoderout[29]&we1; assign regen[30]=decoderout[30]&we1; assign regen[31]=decoderout[31]&we1; register reg0(q0,datain1,clk,reset,regen[0]); register reg1(q1,datain1,clk,reset,regen[1]); register reg2(q2,datain1,clk,reset,regen[2]); register reg3(q3,datain1,clk,reset,regen[3]); register reg4(q4,datain1,clk,reset,regen[4]); register reg5(q5,datain1,clk,reset,regen[5]); register reg6(q6,datain1,clk,reset,regen[6]); register reg7(q7,datain1,clk,reset,regen[7]); register reg8(q8,datain1,clk,reset,regen[8]); register reg9(q9,datain1,clk,reset,regen[9]); register reg10(q10,datain1,clk,reset,regen[10]); register reg11(q11,datain1,clk,reset,regen[11]); register reg12(q12,datain1,clk,reset,regen[12]); register reg13(q13,datain1,clk,reset,regen[13]); register reg14(q14,datain1,clk,reset,regen[14]); register reg15(q15,datain1,clk,reset,regen[15]); register reg16(q16,datain1,clk,reset,regen[16]); register reg17(q17,datain1,clk,reset,regen[17]); register reg18(q18,datain1,clk,reset,regen[18]); register reg19(q19,datain1,clk,reset,regen[19]); register reg20(q20,datain1,clk,reset,regen[20]);

register reg21(q21,datain1,clk,reset,regen[21]);

register reg22(q22,datain1,clk,reset,regen[22]);

register reg23(q23,datain1,clk,reset,regen[23]);

register reg24(q24,datain1,clk,reset,regen[24]);

register reg25(q25,datain1,clk,reset,regen[25]);

register reg26(q26,datain1,clk,reset,regen[26]);

register reg27(q27,datain1,clk,reset,regen[27]);

register reg28(q28,datain1,clk,reset,regen[28]);

register reg29(q29,datain1,clk,reset,regen[29]);

register reg30(q30,datain1,clk,reset,regen[30]);

register reg31(q31,datain1,clk,reset,regen[31]);

mux_32

mux0(dataout,q0,q1,q2,q3,q4,q5,q6,q7,q8,q9,q10,q11,q12,q13,q14,q15,q16,q17,q 18,q19,q20,q21,q22,q23,q24,q25,q26,q27,q28,q29,q30,q31,address); endmodule

3、设计测试文件

`timescale1ns/1ns

module TOP_test;

reg clk,rst,start,memwe;

reg[31:0]memin;

reg[4:0]memaddr;

wire zero,n,v,c;

wire[31:0]dataout;

TOP u(clk,rst,start,memwe,memin,memaddr,zero,n,v,c,dataout);

always#50clk=~clk;

initial

begin

clk=1;

rst=0;

start=0;

#20rst=1;

//load instruction and data to memory.

#100rst=0;

memwe=1;

memin=32'b001000_00000_11111_0000000000010000;

//load r0,r31,16

memaddr=5'd0;

#100memwe=1;

memin=32'b001001_00000_11111_0000000000010001;

//store r0,r31,17

memaddr=5'd1;

#100memwe=1;

memin=32'b001000_00001_11111_0000000000010001;

//load r1,r31,17

memaddr=5'd2;

#100memwe=1;

memin=32'b000001_00010_00000_0101010101010101;

//andi r2,r0,16'b0101010101010101

memaddr=5'd3;

#100memwe=1;

memin=32'b000101_00011_00010_0000000000001011;

//addi r3,r2,16'b0000000000001011

memaddr=5'd4;

#100memwe=1;

memin=32'b001100_11111111111111111111111011;

//branch-5

memaddr=5'd5;

#100memwe=1;

memin=32'hFFFF_FFFF;

//load data to memory

memaddr=5'd16;

//start to execuit instructions.

#100memwe=0;

start=1;

#100start=0;

#10000$stop;

end

endmodule

注意:测试的完备性。

4、将设计文件和测试文件输入Modesim仿真工具,并进行编译和功能仿真。

5、观测仿真波形图,分析结果是否正确。若有错误,则修改设计文件或测试文件,重新编译和仿真。

五、实验结果

序号输入数据仿真结果正确结果仿真结

果的正

确性

1

2

3

六、实验分析与总结

七、实验思考题

电子电路设计软件

电子电路设计软件 我们大家可能都用过试验板或者其他的东西制作过一些电子制做来进行实践。但是有的时候,我们会发现做出来的东西有很多的问题,事先并没有想到,这样一来就浪费了我们的很多时间和物资。而且增加了产品的开发周期和延续了产品的上市时间从而使产品失去市场竞争优势。有没有能够不动用电烙铁试验板就能知道结果的方法呢?结论是有,这就是电路设计与仿真技术。 说到电子电路设计与仿真工具这项技术,就不能不提到美国,不能不提到他们的飞机设计为什么有很高的效率。以前我国定型一个中型飞机的设计,从草案到详细设计到风洞试验再到最后出图到实际投产,整个周期大概要10年。而美国是1年。为什么会有这样大的差距呢?因为美国在设计时大部分采用的是虚拟仿真技术,把多年积累的各项风洞实验参数都输入电脑,然后通过电脑编程编写出一个虚拟环境的软件,并且使它能够自动套用相关公式和调用长期积累后输入电脑的相关经验参数。这样一来,只要把飞机的外形计数据放入这个虚拟的风洞软件中进行试验,哪里不合理有问题就改动那里,直至最佳效果,效率自然高了,最后只要再在实际环境中测试几次找找不足就可以定型了,从他们的波音747到F16都是采用的这种方法。空气动力学方面的数据由资深专家提供,软件开发商是IBM,飞行器设计工程师只需利用仿真软件在计算机平台上进行各种仿真调试工作即可。同样,他们其他的很多东西都是采用了这样类似的方法,从大到小,从复杂到简单,甚至包括设计家具和作曲,只是具体软件内容不同。其实,他们发明第一代计算机时就是这个目的(当初是为了高效率设计大炮和相关炮弹以及其他计算量大的设计)。 电子电路设计与仿真工具包括SPICE/PSPICE;multiSIM7;Matlab;SystemView;MMICAD LiveWire、Edison、Tina Pro Bright Spark等。下面简单介绍前三个软件。 ①SPICE(Simulation Program with Integrated Circuit Emphasis):是由美国加州大学推出的电路分析仿真软件,是20世纪80年代世界上应用最广的电路设计软件,1998年被定为美国国家标准。1984年,美国MicroSim 公司推出了基于SPICE的微机版PSPICE(Personal-SPICE)。现在用得较多的是PSPICE6.2,可以说在同类产品中,它是功能最为强大的模拟和数字电路混合仿真EDA软件,在国内普遍使用。最新推出了PSPICE9.1版本。它可以进行各种各样的电路仿真、激励建立、温度与噪声分析、模拟控制、波形输出、数据输出、并在同一窗口内同时显示模拟与数字的仿真结果。无论对哪种器件哪些电路进行仿真,都可以得到精确的仿真结果,并可以自行建立元器件及元器件库。 ②multiSIM(EWB的最新版本)软件:是Interactive Image Technologies Ltd在20世纪末推出的电路仿真软件。其最新版本为multiSIM7,目前普遍使用的是multiSIM2001,相对于其它EDA软件,它具有更加形象直观的人机交互界面,特别是其仪器仪表库中的各仪器仪表与操作真实实验中的实际仪器仪表完全没有两样,但它对模数电路的混合仿真功能却毫不逊色,几乎能够100%地仿真出真实电路的结果,并且它在仪器仪表库中还提供了万用表、信号发生器、瓦特表、双踪示波器(对于multiSIM7还具有四踪示波器)、波特仪(相当实际中的扫频仪)、字信号发生器、逻辑分析仪、逻辑转换仪、失真度分析仪、频谱分析仪、网络分析仪和电压表及电流表等仪器仪表。还提供了我们日常常见的各种建模精确的元器件,比如电阻、电容、电感、三极管、二极管、继电器、可控硅、数码管等等。模拟集成电路方面有各种运算放大器、其他常用集成电路。数字电路方面有74系列集成电路、4000系列集成电路、等等还支持自制元器件。MultiSIM7还具有I-V分析仪(相当于真实环境中的晶体管特性图示仪)和Agilent信号发生器、Agilent万用表、Agilent 示波器和动态逻辑平笔等。同时它还能进行VHDL仿真和Verilog HDL仿真。 ③MATLAB产品族:它们的一大特性是有众多的面向具体应用的工具箱和仿真块,包含了完整的函数集用来对图像信号处理、控制系统设计、神经网络等特殊应用进行分析和设计。它具有数据采集、报告生成和

网络综合实验设计

模块四综合模块设计(网络互联)班级14信管本学号141201120姓名李显明 实验时间2017年5月11日 实验地点综合实验楼608 分组及同组人双人组,同组人:付卫 实验项目网络互联 实验总结与讨论综合设计实验: 1、二层交换机的工作原理:二层交换机属数据链路层设备,可以识别数据包中的 MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己 内部的一个地址表中。具体的工作流程如下: (1)当交换机从某个端口收到一个数据包,它先读取包头中的源MAC地址,这样它 就知道源MAC地址的机器是连在哪个端口上的; (2)再去读取包头中的目的MAC地址,并在地址表中查找相应的端口; (3)如表中有与这目的MAC地址对应的端口,把数据包直接复制到这端口上; (4)如表中找不到相应的端口则把数据包广播到所有端口上,当目的机器对源机器 回应时,交换机又可以学习目的MAC地址与哪个端口对应,在下次传送数据时就不再 需要对所有端口进行广播了。 不断的循环这个过程,对于全网的MAC地址信息都可以学习到,二层交换机就是这样建立和维护它自己的地址表。 2、三层交换机的工作原理:三层交换机就是具有部分路由器功能的交换机,三层 交换机的最重要目的是加快大型局域网内部的数据交换,能够做到一次路由,多次转 发。三层交换技术就是二层交换技术+三层转发技术。传统交换技术是在OSI网络标 准模型第二层——数据链路层进行操作的,而三层交换技术是在网络模型中的第三层 实现了数据包的高速转发,既可实现网络路由功能,又可根据不同网络状况做到最优 网络性能。使用IP的设备A----三层交换机----使用IP的设备B,比如A要给B发 送数据,已知目的IP,那么A就用子网掩码取得网络地址,判断目的IP是否与自己 在同一网段。如果在同一网段,但不知道转发数据所需的MAC地址,A就发送一个ARP

基本模型机的设计与实现课程设计报告

基本模型机的设计与实现课程设计报告 https://www.doczj.com/doc/bd8250409.html,/maria87328/archive/2008/01/13/2041130.aspx 一、实验基本任务 1、由基本单元电路构成一台基本模型机。 2、设计五条机器指令,并编写相应的微程序。 3、调试指令和模型机使其在微程序的控制下自动产生各部件单元的控制信号正常工作。 二、设计方案 1、硬件设计 (1)设计微程序控制电路 微程序控制器的组成:控制存储器:EPROM2816*3,8D触发器74ls273*2,4D触发器74ls74*3;微指令寄存器格式:18位微指令,6位微地址。 (2)设计时钟信号源和时序控制电路 时钟信号源的组成:时基电路555,可触发单稳态多谐振荡器74ls237*2,输出频率为330-580Hz的方波信号。 时序控制电路:4D触发器74ls175*1组成移位寄存器电路。 (3)设计主存储器 主存电路的组成:6264存储器(8K*8位)*3,地址寄存器:74ls273*1,三态门:74ls245*1。 2、微控制设计 (1)实现存储器读操作; 拨动总清开关后,置控制开关SWC、SW A为“0 0”时,按要求连线后,连续按动“启动运行”开关,可对主存储器RAM连续手动读操作。 (2)实现存储器写操作; 拨动总清开关后,置控制开关SWC、SW A为“0 1”时,按要求连线后,再按动“启动运行”开关,可对主存储器RAM 连续手动写入。 (3)实现程序运行操作。 拨动总清开关后,置控制开关SWC、SW A为“1 1”时,按要求连线后,再按动“启动运行”开关,即可转入到第01号“取址”微指令,启动程序运行。

计算机硬件课程设计--简单模型机设计

计算机硬件课程设计--简单模型机设计

计算机硬件综合课程设计报告

简单模型机设计 一、设计要求 硬件:TDN-CM+计算机组成原理实验系统一台,PC机一台,排线若干,串口线一根。 软件:CMP软件 二、设计目的 1.通过对一个简单计算机的设计,对计算机的基 本组成、部件的设计、部件间的连接、微程序控制器的设计、微指令和微程序的编制与调试等过程有更深的了解,加深对理论课程的理解。 2.通过这次课程设计,建立整机的概念,对程序 进行编辑,校验,锻炼理论联系实际的能力。 3.通过本次课程设计熟悉和训练设计思路与实 现方法。 4.通过本次课程设计锻炼团队合作的能力和团 队问题的解决。

三、设计电路及连线 设计电路及连线实验图如下图1-1所示。 图1-1 简单模型机连线图 四、设计说明 本次课程设计将能在微程序控制下自动产生各部件单元控制信号,实现特定指令的功能。这里,计算机数据通路的控制将由微程序控制器

来完成,CPU 从内存中取出一条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应一个微程序。 本次课程设计采用五条机器指令:IN (输入)、ADD (二进制加法)、STA (存数)、OUT (输出)、JMP (无条件转移),其指令格式如下(前4位为操作码): 助记符 机器指令码 说 明 微程序入口地址 IN 0000 0000 “INPUT DEVICE ”中 10 的开关状态→R0 0001 0000 ×××× ×××× R0+[addr]→R0 11 0010 0000 ×××× ×××× R0→[addr] 12 0011 0000 ×××× ×××× [addr]→BUS 13 0100 0000 ×××× ×××× addr →PC 14 ADD addr STA

电子电路综合实验

电子电路综合实验 总结报告 题目:红外遥控器信号接收和显示的 设计实现 班级:20100412 学号:2010041227 姓名:涂前 日期:2013.04.17 成绩:

摘要: 我国经济的高速发展,给电子技术的发展,带来了新的契机.其中,红外遥控器越来越多的应用到电器设备中,但各种型号遥控器的大量使用带来的遥控器大批量多品种的生产,使得检测成为难题,因此智能的红外遥控器检测装置成为一种迫切的需要。在该红外遥控器信号的接收和显示电路以单片机和一体化红外接收器为核心技术,但是,分立元件搭建的电路也可以实现,具体74HC123单稳态触发器、74HC595、STC89C51单片机红外接收器HS0038组成。在本系统的设计中,利用红外接收器接收遥控器发出的控制信号,并通过单稳态触发器、移位寄存器等将接收信号存储、处理、比较,并将数据处理送至数码管显示模块。总之,通过对电路的设计和实际调试,可以实现红外遥控器信号的接收与显示功能。根据比较接收信号的不同,在数码管显示电路及流水灯电路上显示相应的按键数字. 关键词:74HC123单稳态触发器、74HC595、单片机、红外接收器HS0038

设计选题及设计任务要求 1设计选题 基于单片机的红外遥控器信号接收和转发的设计实现. 2设计任务要求 ⑴结合数字分立元件电路和红外接收接口电路共同设计的一个红外遥控信号接收系统,用普通电视机遥控器控制该系统,使用数码管显示信号的接收结果。 ⑵当遥控器按下任意数值键时,在数码管上显示其值。例如按下“0”时,在数码管上应显示“00”。

目录 第一章系统概述 1.1 方案对比及论证 1.2 总体方案对比 1.3方案对比论证 1.4可行性分析 第二章主要器件介绍 2.1 HS0038塑封一体化红外线接收器 2.2 74HC123单稳态触发器 2.3 74HC595 2.4 MC14495 2.5数码管显示 第三章硬件单元电路设计及原理分析 第四章调试及测试数据分析 4.1 调试的步骤 4.2 调试出现的问题及原因分析 4.3数据测量 4.4 测量仪器介绍及误差分析

计算机组成原理简单模型机实验

实验四简单模型机实验 1.1实验目的 1)将微程序控制器模块通过总线同运算器模块、存储器模块联机,组成一台模型计算机; 2)用微程序控制器控制模型机数据通路; 3)通过CPU运行5条机器指令组成的简单程序,掌握机器指令与微指令的关系,牢固建立机器的整机概念。 1.2电路图 本次实验用到前几次实验所有电路,将几个模块组成一台简单计算机,由微程序控制器控制数据通路,实现cpu从内存取出一条机器指令到执行指令结束的一个指令周期,由微指令组成的序列来完成,一条机器指令对应一个微程序。 图1 电路图 1.3 实验原理 (1)PC计数器初始值为“0”,微程序默认从00地址开始执行,产生控制信号,使PC的地址通过ABUS将送到存储器(6116)的地址锁存器AR中, PC=PC+1;(2)读出存储器中存放内容,通过DBUS送到IR指令寄存器中,实现指令译码,指令的操作码送至微程序控制器的程序跳转控制部分,在P(1)的控制下与微程序中储存的下一条指令地址进行逻辑运算,产生真正的下一条微程序地址;(3)在微程序的控制下单步执行微指令序列。

1.4 微指令格式 表1 微指令格式 1.5 微程序流程图: 图2 微程序流程图

1.6微程序代码表 1.7 数据通路总体图 图3 数据通路总体图

五条机器指令格式(其中,A为内存地址8bit): RAM中装入的程序和数据(其中,地址为8进制): 1.8 实验任务及步骤 (1)实验连线:本次实验大部分的连线已由教师完成,请同学们对照微指令格式,完成微程序控制器的剩余部分连线。 (2)实验环境初始化:实验平台通电前请关闭DR1(74ls273),DR2(74ls273),存储器(6116)的地址锁存器(74ls273),微程序控制器的地址锁存器(74ls175)的自动清零功能,将几个芯片的-MR引脚置为“1”。 时钟发生器的功能设定为单步执行,具体信号为:STOP=0,STEP=1。 (3)加电运行初始化:①指令寄存器IR自动清零,程序计数器PC手动清零,将两片74ls163的ENT,ENP引脚置“1”,-CR引脚置“0”,打开三态门开关,给单步时钟脉冲;

电子线路实验设计与仿真

目录 第一章基本使用方法及数字电路仿真实验实验一基本门电路在脉冲电路中的应用 实验二555时基集成电路 实验三用Protel99SE对单稳态电路进行信号分析 实验四中规模集成组合电路 实验五典型触发器的功能和应用 实验六移位寄存器及应用 实验七计数译码及显示 实验八时序电路逻辑设计应用举例 实验九实用电路应用举例 第二章模拟电路仿真实验 实验一单管共射放大器 实验二两管负反馈放大器 实验三RC文氏桥振荡电路 实验四方波、三角波发生器 实验五共集-共基放大器 实验六多谐振荡器-互补输出-微分器-整流器-积分器实验七互补振荡器 实验八正弦波调制 实验九由运放构成的FSK电路

第一章基本使用方法及数字电路仿真实验 实验一:基本门电路在脉冲电路中的应用 一.实验目的 1.学习Protel99SE的基本操作,如:器件库的调用,元器件的摆放,属性的设定,连线。 2.结合基本门电路在脉冲电路中的应用,绘制出简单的原理图。 二.实验原理 与门(AND)、或门(OR)和非门(NOR)是三种最基本的门电路,它们是构成其他组合电路的基本单元。其电路逻辑符号如下: Y=A . B Y=A+B Y=/A 下面列举它们几个基本应用: 1.多谐振荡器: a.环形振荡器最简单的多谐振荡器是由奇数个反相器组成的环形振荡器。见图1-1。 图1-1 b.电容反馈多谐振荡器见图1-2。 图1-2 2.单稳态触发器 a.积分型单稳态触发器见图1-3。 图1-3 b.微分型单稳态触发器见图1-4。

图1-4 三.实验步骤及方法 下面我们以积分型单稳态触发器为例,详细介绍如何绘制原理图。 1.新建一个设计(实验1.SCH),进入设计原理图的SCH设计系统。 用菜单File/New新建一设计,命名,选择文件路径,然后进入Protel99SE的标准界面。(图1-5)左边的Explorer类似于windows的资源管理器。进入Documents 目录,用File/New命令,(或者直接点右键),系统弹出打开文件类型的对话框。我们选择SCH图标,即进入设计原理图的SCH设计系统,同时系统界面变为SCH的设计界面。(图1-6) 图1-5

北航电子电路设计数字部分实验报告

电子电路设计数字部分实验报告 学院: 姓名:

实验一简单组合逻辑设计 实验内容 描述一个可综合的数据比较器,比较数据a 、b的大小,若相同,则给出结果1,否则给出结果0。 实验仿真结果 实验代码 主程序 module compare(equal,a,b); input[7:0] a,b; output equal; assign equal=(a>b)1:0; endmodule 测试程序

module t; reg[7:0] a,b; reg clock,k; wire equal; initial begin a=0; b=0; clock=0; k=0; end always #50 clock = ~clock; always @ (posedge clock) begin a[0]={$random}%2; a[1]={$random}%2; a[2]={$random}%2; a[3]={$random}%2; a[4]={$random}%2; a[5]={$random}%2; a[6]={$random}%2; a[7]={$random}%2; b[0]={$random}%2; b[1]={$random}%2; b[2]={$random}%2; b[3]={$random}%2; b[4]={$random}%2;

b[5]={$random}%2; b[6]={$random}%2; b[7]={$random}%2; end initial begin #100000 $stop;end compare m(.equal(equal),.a(a),.b(b)); endmodule 实验二简单分频时序逻辑电路的设计 实验内容 用always块和@(posedge clk)或@(negedge clk)的结构表述一个1/2分频器的可综合模型,观察时序仿真结果。 实验仿真结果

电子电路设计与仿真工具

电子电路设计与仿真工具 我们大家可能都用过试验板或者其他的东西制作过一些电子制做来进行实践。但是有的时候,我们会发现做出来的东西有很多的问题,事先并没有想到,这样一来就浪费了我们的很多时间和物资。而且增加了产品的开发周期和延续了产品的上市时间从而使产品失去市场竞争优势。有没有能够不动用电烙铁试验板就能知道结果的方法呢?结论是有,这就是电路设计与仿真技术。 说到电子电路设计与仿真工具这项技术,就不能不提到美国,不能不提到他们的飞机设计为什么有很高的效率。以前我国定型一个中型飞机的设计,从草案到详细设计到风洞试验再到最后出图到实际投产,整个周期大概要10年。而美国是1年。为什么会有这样大的差距呢?因为美国在设计时大部分采用的是虚拟仿真技术,把多年积累的各项风洞实验参数都输入电脑,然后通过电脑编程编写出一个虚拟环境的软件,并且使它能够自动套用相关公式和调用长期积累后输入电脑的相关经验参数。这样一来,只要把飞机的外形计数据放入这个虚拟的风洞软件中进行试验,哪里不合理有问题就改动那里,直至最佳效果,效率自然高了,最后只要再在实际环境中测试几次找找不足就可以定型了,从他们的波音747到 F16都是采用的这种方法。空气动力学方面的数据由资深专家提供,软件开发商是IBM,飞行器设计工程师只需利用仿真软件在计算机平台上进行各种仿真调试工作即可。同样,他们其他的很多东西都是采用了这样类似的方法,从大到小,从复杂到简单,甚至包括设计家具和作曲,只是具体软件内容不同。其实,他们发明第一代计算机时就是这个目的(当初是为了高效率设计大炮和相关炮弹以及其他计算量大的设计)。 电子电路设计与仿真工具包括SPICE/PSPICE;multiSIM7;Matlab;SystemView;MMICAD LiveWire、Edison、Tina Pro Bright Spark等。下面简单介绍前三个软件。 ①SPICE(Simulation Program with Integrated Circuit Emphasis):是由美国加州大学推出的电路分析仿真软件,是20世纪80年代世界上应用最广的电路设计软件,

简单模型机实验报告

评语:课中检查完成的题号及题数: 课后完成的题号与题数: 成绩:自评成绩: 实验报告 实验名称:__________ 简单模型机实验报告____________ 日期: _________________ 班级:学号:姓名: -、实验目的: 1掌握一个简单CPU的组成原理。 2、在掌握部件单元电路的基础上,进一步将其构造一台基本模型计算机。 3、为其定义五条机器指令,编写相应的微程序,并上机调试掌握整机概念。 二、实验内容: 本实验要实现一个简单的CPU并且在此CPU的基础上,继续构建一个简单的模型计算机。CPU由运算器(ALU、微程序控制器(MC、通用寄存器(R0,指令寄存器(IR)、程序计数器(PC和地址寄存器(AR组成,如图2-1-1所示。这个CPU在写入相应的微指令后,就具备了执行机器指令的功能,但是机器指令一般存放在主存当中,CPU必须和主存挂接后,才有实际的意义,所以还需要在该CPU的基础上增加一个主存和基本的输入输出部件,以构成一个简单的模型计算机。

图1-4-1基本CPU 构成原理图 除了程序计数器(PC ,其余部件在前面的实验中都已用到,在此不再讨论。系统 的程序计数器(PC 由两片74LS161和一片74LS245构成,其原理如图1-4-2所示。PC_B 为三态门的输出使能端,CLR 连接至CON 单元的总清端CLR 按下CLR 按钮,将使PC 清 零,LDPC 和T2相与后作为计数器的计数时钟,当LOAD 为低时,计数时钟到来后将CPU 内总线上的数据打入PG 图1-4-2程序计数器(PC )原理图 本模型机和前面微程序控制器实验相比,新增加一条跳转指令 JMP 共有五条指令: OUT (输出)、JMP (无条件转移),HLT (停 机), 其指令格式如下(高4位为操作码): 助记符 机器指令码 说明 IN 0010 0000 IN — R0 ADD 0000 0000 R0 + R0 — R0 OUT 0011 0000 R0 — OUT JMP addr 1100 0000 ******** addr — PC HLT 0101 0000 停机 址码。微程序控制器实验的指令是通过手动给出的,现在要求 CPU 自动从存储器读取指 令并执行。根据以上要求,设计数据通路图,如图 1-4-3所示。 IN (输入)、ADD (二进制加法)、 其中JMP 为双字节指令,其余均为单字节指令, ******** 为addr 对应的二进制地 LDPC T2 CLR LOAD

计算机组成原理 实验八 简单模型计算机实验

实验八 简单模型计算机实验 一、实验目的 1)通过实验分析简单模型机结构,了解计算机的工作原理。 2)掌握计算机微程序控制器的控制方法,掌握计算机指令执行过程 二、实验原理 基本整机模型数据框图如图所示,计算机数据通路的控制将由微程序控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应一个微程序。 数据的通路从程序计数器PC的地址送到主存的地址寄存器,根据地址寄存器的内容找到相应的存储单元。 存储器中的数据是指令时,那么数据是从RAM送到总线,再从总线送到IR 中。 存储器中的数据是需要加工的数据时,那么数据是从RAM送到总线,再动总线送到通用寄存器中等待加工。 数据加工过程中,两个数据是从总线上将数据分别分时压入两个暂存器中,等待运算部件的加工,在数据加工完成以后。运算结果是通过三太门送到总线上。 三态门的控制时由微控制器来控制。

图:模型机的数据通路图 三、实验过程 1.连线 按实验逻辑原理图连接以下控制信号。 1)时钟单元(CLOCK UNIT)的T1-T4接到微程序控制单元(MAIN CONTROL UNIT)

的T1-T4. 2)手动控制开关单元(MANUAL UNIT)的KA ,KB接到指令单元(INS UNIT) 的KA,KB。 3)指令单元(INS UNIT)的J(1)-J(5)、SE6-SE0、B-IR 接到的微程序控制单 元(MAIN CONTROL UNIT)的J(1)-J(5)、SE6-SE0、B-IR。 4)输入/输出单元(INPUT/OUTPUT UNIT)IO-W,IO-R接到微程序控制单元(MAIN CONTROL UNIT)的IO-W,IO-R,Ai接到地址单元(ADDRESS UNIT)的A0. 5)主存储器单元(MEM UNIT)M-W、M-R接到微程序控制单元(MAIN CONTROL UNIT)的M-W、M-R,A7-A0 接到地址单元(ADDRESS UNIT)的A7-A0. 6)地址单元(ADDRESS UNIT)的B-AR、B-PC、PC+1、PC-B接到微程序控制单元 (MAIN CONTROLUNIT)的B-AR、B-PC、PC+1、PC-B. 7)通用寄存器单元(REG UNIT)的B-R、R0-B 接到微程序控制单元(MAIN CONTROL UNIT)的B-DR、DR-B。 8)把算术逻辑单元(ALU UNIT)的B-DA1、B-A2、ALU-B Cycn、CyNCn、S3-S0、 M、Ci接到微程序控制单元(MAIN CONTROL UNIT)的B-DA1、B-A2、ALU-B、Cycn、CyNCn、S3-S0、M、Ci。 2.写入、检验微代码 这项操作与实验七的操作过程相同 3.装入机器指令汇编程序操作 1)微程序控制单元(MAIN CONTROL UNIT)编程开关置于“RUN”状态。 2)手动控制开关单元(MANUAL UNIT)的“STEP/RUN”开关置于“STEP”状态。 3)手动控制开关单元(MANUAL UNIT)的KA,KB开关置于1、0写主存储器状 态。 4)拨动开关从11—0—1,产生一个负脉冲,清零程序计数器PC、微地址 寄存器。 5)拨动“START”按钮一次,从微程序控制存储器的00H微地址开始执行微指 令,暂停在0AH微地址处。 6)此时在输入数据开关上拨入实验用机器指令汇编程序表中对应00H地址的

电子线路课程设计仿真

目录 第一章概述 用数字信号完成对数字量进行算术运算和逻辑运算的电路称为数字电路,或数字系统电路。由于它具有逻辑运算和逻辑处理功能,所以又称数字逻辑电路。现代的数字电路由半导体工艺制成的若干数字集成器件构造而成。数字电路主要研究对象是电路的输出与输入之间的逻辑关系,因而在数字电路中不能采用模拟电路的分析方法,例如,小信号模型分析法。由于数字电路中的器件主要工作在开关状态,因而采用的分析工具主要是逻辑代数,用功能表、真值表、逻辑表达式、波形图等来表达电路的主要功能。 作为信息技术和电子技术的一个重要分支,EDA工具正在发挥着极大的作用,成为学习和应用现代电子技术的重要内容。Multism是目前国际上流行的EDA软件工具之一,它提供了十分灵活的电子线路仿真研究方

法既可用于电路进行理想情况的仿真研究,又能用于设定条件下的仿真研究。 第二章 Multism仿真电路 2.1数字钟电路的设计 2.1.1设计内容 设计两个60进制计数器进行“秒”和“分”的计数,一个24进制计数器进行“时”的计数。 2.1.2设计思想 任意一款数字电子钟,都要有一个能产生稳定高频脉冲信号的振荡器,它产生的高频脉冲信号可以作为数字钟的时间基准。但它产生的高频脉冲信号要经过分频器多次分频,才能得到和输出标准秒秒冲,标准秒脉冲供给电子钟进行秒计时,秒计数器满60后向分计数器进位,分计数器满60后向小时计数器进位,小时计数器可按照24进制计数,最终计数器的输出经译码器送显示器显示。所以设计时首先用2片74ls160实现秒的设计,它为六十进制 , 即显示 00

—59 秒,它的个位为十进制,十位为六进制。对于个位而言,当信号从0000 —1001时采用反馈清0法进行清0,同时向十位产生一个进位。与此同时,当 十位从0000—0101时,也采用反馈清零法清0,然后重新开始下一循环。分的 设计同秒相同,通过级联(用与非门的输出结果控制分的时钟信号)实现秒向 分的进位。小时的设计为二十四进制计数器 ,显示为 00—23, 个位仍为十进 制,但当十进位计到 2,而个位计到4时清零,就为二十四进制了,也同样通过 级联(同秒向分的进位)实现分向时的进位。 一个功能比较完整的数字电子钟系统组成框图如图2.1.1所示。 图2.1.1 2.1.3设计过程 (a)60进制计数 秒计数器由秒个位计数器和秒十位计数器组成。十进制计数用反馈归零法 设计,用 74ls90( 二—五—十进制计数器)来设计。六十进制计数的反馈方法 是当 CP 输入第六个脉冲时,输出状态“Q3Q2QlQ0=0110”,取出Q2Ql送到计数

实验七基本模型机的设计与实现

实验七 基本模型机的设计与实现 一、实验目的 ⒈在掌握部件单元电路实验的基础上,进一步将其组成系统地构造 一台基本模型计算机。 ⒉为其定义5条机器指令,并编写相应的微程序,上机调试掌握整机 概念。 二、实验设备 Dais-CMH+/CMH 计算器组成原理教学实验系统一台,实验用扁平 线、导线若干。 三、实验原理 部件实验过程中,各部件单元的控制信号是以人为模拟产生为主,而 本次实验将能在微程序控制下自动产生各部件单元的控制信号,实现特 定指令的功能。这里,计算机数据通路的控制将由微程序控制器来完 成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期全 部由微指令组成的序列来完成,即一条机器指令对应一个微程序。 本实验采用五条机器指令:IN(输入)、ADD(二进制加法)、 STA(存数)、OUT(输出)、JMP(无条件转移),其指令格式如下 (前三位为操作码): ==========================================================助记符 机器指令码 说 明 -------------------------------------------------- ------------- IN R0,SW 0010 0000 数据开关状态 →R0 ADD R0,[addr] 0100 0000 XXXXXXXX R0+[addr]→R0 STA [addr],R0 0110 0000 XXXXXXXX R0→[addr] OUT [addr],LED 1000 0000 XXXXXXXX [addr]→LED JMP addr 1010 0000 XXXXXXXX addr→PC ==========================================================其中IN为单字节(8位),其余为双字节指令,XXXXXXXX为addr对 应的二进制地址码。 根据以上要求设计数据通路框图,如图7-10-1所示。系统涉及到的 微程序流程见图7-7-3,当拟定“取指”微指令时,该微指令的判别测试 字段为P(1)测试。由于“取指”微指令是所有微程序都使用的公用微指 令,因此P(1)的测试结果出现多路分支。本机用指令寄存器的前3位 (IR7~IR5)作为测试条件,出现8路分支,占用8个固定微地址单元。 当全部微程序设计完毕后,应将每条微指令代码化,表7-10-1即为 将图7-10-2的微程序流程图按微指令格式转化而成的“二进制微代码

高频课程设计---基于Multisim的高频电子线路设计与仿真

高频电子线路课程设计 题目:基于Multisim的高频电子线路设计与仿真 中文摘要 本接收系统,以模拟乘法器为核心,接收部分由本机振荡,混频电路,晶体振荡电路,小信号放大,鉴频电路等模块组成。在设计过程中,采用模块化的设计方法,并使用了EDA 工具软件,在计算机屏幕上模仿真实实验室的工作台,绘制电路图需要的元器件、电路仿真需要的测试仪器均可直接从屏幕上选取,提高了设计效率。方案的优点是电路简单、器件易得、大大提高了电路的可行性。 关键词: 调频接收机;鉴频电路;仿真

目录 第一章概述 (1) 第二章窄带调频接收机原理介绍 (2) 2.1 接收系统原理框图 (2) 2.2 高频小信号放大电路 (3) 2.3 混频电路 (3) 2.4 晶体振荡器电路 (4) 2.5 鉴频电路 (4) 第三章设计要求 (5) 3.1 目的及意义 (5) 3.2主要技术指标和要求 (6) 3.3 内容和要求 (6) 第四章开发平台简介 (8) 第五章详细设计及仿真 (10) 5.1 高频小信号放大器电路设计及仿真 (10) 5.2 混频电路设计及仿真 (11) 5.3 晶体振荡电路设计及仿真 (12) 5.4 鉴频电路设计及仿真 (12) 总结 (16) 参考文献 (17)

第一章概述 随着社会经济的迅速发展和科学技术的全面进步,计算机事业的飞速发展,以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。随着经济文化水平的显著提高,人们对生活质量及工作软件的要求也越来越高。在当今电子设计领域,EDA设计和仿真是一个十分重要的设计环节。在众多的EDA设计和仿真软件中,EWB软件以其强大的仿真设计应用功能,在各高校电信类专业电子电路的仿真和设计中得到了较广泛的应用。EWB软件及其相关库包的应用对提高学生的仿真设计能力,更新设计理念有较大的好处。 EWB(电子工作平台)软件,最突出的特点是用户界面友好,各类器件和集成芯片丰富,尤其是其直观的虚拟仪表是EWB软件的一大特色。它采用直观的图形界面创建电路:在计算机屏幕上模仿真实实验室的工作台,绘制电路图需要的元器件、电路仿真需要的测试仪器均可直接从屏幕上选取。EWB软件所包含的虚拟仪表有:示波器,万用表,函数发生器,波特图图示仪,失真度分析仪,频谱分析仪,逻辑分析仪,网络分析仪等。 本次课程设计主要是利用EWB软件来设计和仿真信号调频接收机系统电路。

计算机组成原理 基本模型机实验

淮海工学院计算机工程学院实验报告书 课程名:《计算机组成原理》 题目:实验四基本模型机实验 班级: 学号: 姓名:

1、目的与要求 1)在“微程序控制器的组成与微程序设计实验”的基础上,将第一部分中的各单元组成系统,构造一台基本模型计算机。 2)本实验定义五条机器指令,编写相应的微程序,并上机调试运行,形成整机概念。2、实验设备 1) ZYE1601B计算机组成原理教学实验箱一台,排线若干。 2) PC机一台。 3、实验步骤与源程序 l) 根据该模型机的指令系统,编写一段程序。这里给出两个参考程序。 参考程序一: 本程序从输入设备(数码开关)取入数据,保存在内存单元08,然后从08单元送到输出设备(LED数码管)进行显示。然后程序停止(请实验者考虑:如何修改程序,使程序不断从输入设备取出数据,送到输出设备显示。每次循环过程中,可以使输入设备数据改变,考察输出显示的结果。)。 设计机器指令程序如下(机器码为十六进制数据)。 地址内容助记符说明 00 00 IN ;输入开关数据→R0 01 20 STA [08H] ;R0→[08] 02 08 ;地址 03 30 OUT [08H] ;[08H]→BUS 04 08 ;地址 05 40 JMP [00H] ;00H→PC 06 00 ;跳转地址 参考程序二: 本程序从输入设备(数码开关)读入数据,与0A单元的数据相加,然后送到输出设备(LED 数码管)进行显示。本程序不断地循环运行,在运行中可改变输入开关(INPUT)的值,观察输出显示的变化。 设计机器指令程序如下(机器码为十六进制数据)。 地址内容助记符说明 00 00 IN ;输入开关数据→R0,采集数据 01 10 ADD [0AH] ;R0+[0AH]→R0,输入数据与指定数据相加 02 0A ;地址 03 20 STA [0BH] ;R0→[0B] 04 0B ;地址 05 30 OUT [0BH] ;[0BH]→BUS,输出显示 06 0B ;地址 07 40 JMP [00H] ;00H→PC 08 00 ;跳转地址 0A 01 ;加数,可自定 0B ;求和结果保存在0B单元 2) 按图1连接实验线路。 3) 写程序: 对于本实验箱可以用两种方法来写入程序。 方法一:手动写入 (1)先将机器指令对应的微代码正确地写入2816中,由于在实验1.6微程序控制器的组成与微程序设计实验中已将微代码写入E2PR0M芯片中,对照表2—2校验正确后就可使用。

模型机实验报告

哈尔滨工程大学 实验报告 实验名称:复杂模型机设计与实现 班级: 学号: 姓名: 实验时间: 成绩: 指导教师:程旭辉附小晶 实验室名称:计算机专业实验中心 一、实验名称:复杂模型机的设计与实现 二、实验目的:

1.综合运用所学计算机原理知识,设计并实现较为完整的计算机。 2.设计指令系统。 3.编写简单程序,在所设计的复杂模型计算机上调试运行。 三、实验设备: GW-48CPP系列计算机组成原理实验系统。 四、实验原理: 1.数据格式 8位,其格式如下: 其中第7位为符号位,数值表示范围是:-1≤1。 2.指令格式 所设计的指令分为四大类共十六条,其中包括算术逻辑指令、I/O指令、访问、转移指令和停机指令。 (1)算术逻辑指令 设计9条算术逻辑指令并用单字节表示,采用寄存器直接寻址方式,其格式如下: 其中, (2)访问指令及转移指令 访问指令有2条,即存数(STA)、取数(LDA);2条转移指令,即无条件转移(JMP)、结果为零或有进位转移指令(BZC) 其中,OP-CODE指令)。D为位移量(正负均可),M为寻址模式,其定义如下: 在本模型机中规定变址寄存器RI为寄存器R2。 (3)I/O指令 输入(IN)和输出( 其中,addr=01时,选中“OUTPUT DEVICE”中的LCD

点阵液晶屏作为输出设备。 (4)停机指令 指令格式如下: 3.指令系统 共有16条基本指令,其中算术逻辑指令7条,访问内存指令和程序控制指令4条,输入/输出指令2条,其

本模型机的数据通路框图如图7-1。根据机器指令系统要求,设计微程序流程图及确定微地址,如图7-2。 图7-2 微程序流程图 五、实验内容: 按照系统建议的微指令格式,参照微指令流程图,将每条微指令代码化,译成二进制代码表,并将二进制代码表转换为联机操作时的十六进制格式文件。 微代码定义如表7-1所示。

电子系统综合设计实验报告

电子系统综合设计实验报告 所选课题:±15V直流双路可调电源 学院:信息科学与工程学院 专业班级: 学号: 学生姓名: 指导教师: 2016年06月

摘要本次设计本来是要做±15V直流双路可调电源的,但由于买不到规格为±18V的变压器,只有±15V大小的变压器,所以最后输出结果会较原本预期要小。本设计主要采用三端稳压电路设计直流稳压电源来达到双路可调的要求。最后实物模型的输出电压在±13左右波动。 1、任务需求 ⑴有+15V和-15V两路输出,误差不超过上下1.5V。(但在本次设计中,没有所需变压器,所以只能到±12.5V) ⑵在保证正常稳压的前提下,尽量减小功效。 ⑶做出实物并且可调满足需求 2、提出方案 直流可变稳压电源一般由整流变压器,整流电路,滤波器和稳压环节组成如下图a所示。 ⑴单相桥式整流 作用之后的输出波形图如下:

⑵电容滤波 作用之后的输出波形图如下: ⑶可调式三端集成稳压器是指输出电压可以连续调节的稳压器,有输出正电压的LM317三端稳压器;有输出负电压的LM337三端稳压器。在可调式三端集成稳压器中,稳压器的三个端是指输入端、输出端和调节端。 LM317的引脚图如下图所示:(LM337的2和3引脚作用与317相反)

3、详细电路图: 因为大容量电解电容C1,C2有一定的绕制电感分布电感,易引起自激振荡,形成高频干扰,所以稳压器的输入、输出端常并入瓷介质小容量电容C5,C6,C7,C8用来抵消电感效应,抑制高频干扰。 参数计算: 滤波电容计算: 变压器的次级线圈电压为15V ,当输出电流为0.5A 时,我们可以求得电路的负载为I =U /R=34Ω时,我们可以根据滤波电容的计算公式: C=т/R,来求滤波电容的取值范围,其中在电路频率为50HZ 的情况下,T 为20ms 则电容的取值范围大于600uF ,保险起见我们可以取标准值为2200uF 额定电压为50V 的点解电容。另外,由于实际电阻或电路

基本模型机实验

基本模型机实验 实验目的: 理解微程序结构CU设计方法 理解机器指令与微程序之间的关系 掌握简单模型机CU的设计方法。 实验原理: 1.基本模型机使用的实验台模块 基本模型机应包括计算机系统的五大部件,相应地,在使用实验台构造模型机时,涉及到以下模块,必须完成其数据线(扁缆)和各种控制信号线的连接。 运算器模块– ALU; 指令部件模块、时序启停控制模块、微程序模块- 这些模块合在一起,相当于计算机系统中的CU; 存储器模块- 可存储机器指令,用于验证模型机的运行情况; 输入模块– 通过开关输入二进制数据; 输出模块– 通过LED显示从数据总线上输出的八位数据。 2.基本模型机制持的指令系统 实验台支持的基本模型机实验中,模型机支持的指令集包括五条指令,其机器指令形式如下: 助记符机器指令格式操作 IN R0,SW 0010 0000 将输入模块开关输入值送入寄存器R0 ADD R0,[addr] 0100 0000 xxxxxxxx 双字节指令,第二字节为访存操作数 的地址。 STA [addr],R0 0110 0000 xxxxxxxx 同上。将R0寄存器的值存入地址addr 对应的内存单元中。 OUT[addr],LED 1000 0000 xxxxxxxx 同上。将内存地址addr对应单元的内 容输出到输出模块,由LED显示。 JMP addr 1010 0000 xxxxxxxx 同上。给PC赋值addr,控制程序跳 转到addr处执行。 3.微程序设计 基本模型机中实现CU控制的微程序共有6段,分别是取指周期微程序,和五条机器指令各自的执行周期微程序。其结构如下图所示: 其中,需要说明的是条件P(1),这个测试出现在取指周期结束时,系统需要根据机器指令的操作码字段(机器指令的前三位)进行散转,分别转入相应的执行周期微程序中执行。

电子电路综合实验报告

电子电路实验3 综合设计总结报告题目:波形发生器 班级:20110513 学号:2011051316 姓名:仲云龙 成绩: 日期:2014.3.31-2014.4.4

一、摘要 波形发生器作为一种常用的信号源,是现代测试领域内应用最为广泛的通用仪器之一。在研制、生产、测试和维修各种电子元件、部件以及整机设备时,都需要信号源,由它产生不同频率不同波形的电压、电流信号并加到被测器件或设备上,用其他仪器观察、测量被测仪器的输出响应,以分析确定它们的性能参数。波形发生器是电子测量领域中最基本、应用最广泛的一类电子仪器。它可以产生多种波形信号,如正弦波、三角波、方波等,因而广泛用于通信、雷达、导航等领域。 二、设计任务 2.1 设计选题 选题七波形发生器 2.2 设计任务要求 (1)同时四通道输出,每通道输出矩形波、锯齿波、正弦波Ⅰ、正弦波Ⅱ中的一种波形,每通道输出的负载电阻均为1K欧姆。 (2)四种波形的频率关系为1:1:1:3(三次谐波),矩形波、锯齿波、正弦波Ⅰ输出频率范围为8 kHz—10kHz,正弦波Ⅱ输出频率范围为24 kHz—30kHz;矩形波和锯齿波输出电压幅度峰峰值为1V,正弦波Ⅰ、Ⅱ输出幅度为峰峰值2V。(3)频率误差不大于5%,矩形波,锯齿波,正弦波Ⅰ通带内输出电压幅度峰峰值误差不大于5%,正弦波Ⅱ通带内输出电压幅度峰峰值误差不大于10%,矩形波占空比在0~1范围内可调。 (4)电源只能选用+9V单电源,由稳压电源供给,不得使用额外电源。

三、方案论证 1.利用555多谐振荡器6管脚产生8kHz三角波,3管脚Vpp为1V的8kHz的方波。 2.三角波通过滞回比较器和衰减网络产生8kHzVpp为1V的方波。 3.方波通过反向积分电路产生8kHzVpp为1V的三角波。 4.方波通过二阶低通滤波器产生8kHz低通正弦波。 5.方波通过带通滤波器产生中心频率为27kHz的正弦波。 系统方框图见图1 图1 系统方框图 此方案可以满足本选题技术指标,分五个模块实现产生所需的波形,而且电路模块清晰,容易调试,电路结构简单容易实现。

相关主题
文本预览
相关文档 最新文档