基于状态机的简易RISC CPU设计

基于状态机的简易RISC CPU设计
基于状态机的简易RISC CPU设计

基于状态机的简易RISC CPU设计作者:ce123

目录

一、什么是CPU?

二、RISC CPU结构

1.时钟发生器

2.指令寄存器

3.累加器

4.RISC CPU算术逻辑运算单元

5.数据控制器

6.状态控制器

7.程序计数器

8.地址多路器

9.外围模块

10.地址译码器

a.RAM

b.ROM

三、RISC CPU中各部件的相互连接关系

四、RISC CPU和它的外围电路

五、RISC CPU的寻址方式和指令系统

六、RISC CPU的操作和时序

Linux公社(https://www.360docs.net/doc/d810527293.html,)于2006年9月25日注册并开通网站,Linux 现在已经成为一种广受关注和支持的一种操作系统,IDC是互联网数据中心,LinuxIDC就是关于Linux的数据中心。

https://www.360docs.net/doc/d810527293.html,提供包括Ubuntu,Fedora,SUSE技术,以及最新IT资讯等Linux专业类网站。

正文

一、什么是CPU?

CPU 即中央处理单元的英文缩写,它是计算机的核心部件。计算机进行信息处理可分为两个步骤:

1. 将数据和程序(即指令序列)输入到计算机的存储器中。

2. 从第一条指令的地址起开始执行该程序,得到所需结果,结束运

行。CPU的作用是协调并控制计算机的各个部件执行程序的指令

序列,使其有条不紊地进行。因此它必须具有以下基本功能:

o a)取指令:当程序已在存储器中时,首先根据程序入口地址取出一条程序,为此要发出指令地址及控制信号。

o b)分析指令:即指令译码。是对当前取得的指令进行分析,指出它要求什么操作,并产生相应的操作控制命令。

o c)执行指令:根据分析指令时产生的“操作命令”形成相应的操作控制信号序列,通过运算器,存储器及输入/输出设备

的执行,实现每条指令的功能,其中包括对运算结果的处

理以及下条指令地址的形成。

将其功能进一步细化,可概括如下:

1. 能对指令进行译码并执行规定的动作;

2. 可以进行算术和逻辑运算;

3. 能与存储器,外设交换数据;

4. 提供整个系统所需要的控制;

尽管各种CPU的性能指标和结构细节各不相同,但它们所能完成的基本功能相同。由功能分析,可知任何一种CPU内部结构至少应包含下面这些部件:

1. 算术逻辑运算部件(ALU),

2. 累加器,

3. 程序计数器,

4. 指令寄存器,译码器,

5. 时序和控制部件。

RISC 即精简指令集计算机(Reduced Instruction Set Computer)的缩写。它是一种八十年代才出现的CPU,与一般的CPU 相比不仅只是简化了指令系统,而且是通过简化指令系统使计算机的结构更加简单合理,从而提高了运算速度。从实现的途径看,RISC_CPU

与一般的CPU的不同处在于:它的时序控制信号形成部件是用硬布线逻辑实现的而不是采用微程序控制的方式。所谓硬布线逻辑也就是用触发器和逻辑门直接连线所构成的状态机和组合逻辑,故产生控制序列的速度比用微程序控制方式快得多,因为这样做省去了读取微指令的时间。RISC_CPU也包括上述这些部件,下面就详细介绍一个简化的用于教学目的的RISC_CPU的可综合VerilogHDL模型的设计和仿真过程。

二、RISC CPU结构

RISC_CPU是一个复杂的数字逻辑电路,但是它的基本部件的逻辑并不复杂。可把它分成八个基本部件:

1. 时钟发生器

2. 指令寄存器

3. 累加器

4. RISC CPU算术逻辑运算单元

5. 数据控制器

6. 状态控制器

7. 程序计数器

8. 地址多路器

其中时钟发生器利用外来时钟信号进行分频生成一系列时钟信号,送往其他部件用作时钟信号。各部件之间的相互操作关系则由状态控制器来

控制。下面逐一介绍各部件的具体结构和逻辑关系。

1 时钟发生器

时钟发生器 clkgen 利用外来时钟信号clk 来生成一系列时钟信号clk1、fetch、alu_clk 送往CPU的其他部件。其中fetch是外来时钟 clk 的八分频信号。利用fetch的上升沿来触发CPU控制器开始执行一条指令,同时fetch信号还将控制地址多路器输出指令地址和数据地址。clk1信号用作指令寄存器、累加器、状态控制器的时钟信号。alu_clk 则用于触发算术逻辑运算单元。时钟发生器clkgen的波形见下图所示:

其VerilogHDL 程序见下面的模块:

[plain]

1. module clk_gen (clk,reset,clk1,clk2,clk4,fetch,alu_clk);

2. input clk,reset;

3. output clk1,clk2,clk4,fetch,alu_clk;

4. wire clk,reset;

5. reg clk2,clk4,fetch,alu_clk;

6. reg[7:0] state;

7. parameter S1 = 8'b00000001,

8. S2 = 8'b00000010,

9. S3 = 8'b00000100,

10. S4 = 8'b00001000,

11. S5 = 8'b00010000,

12. S6 = 8'b00100000,

13. S7 = 8'b01000000,

14. S8 = 8'b10000000,

15. idle = 8'b00000000;

16. assign clk1 = ~clk;

17.

18. always @(negedge clk)

19. if(reset)

20. begin

21. clk2 <= 0;

22. clk4 <= 1;

24. alu_clk <= 0;

25. state <= idle;

26. end

27. else

28. begin

29. case(state)

30. S1:

31. begin

32. clk2 <= ~clk2;

33. alu_clk <= ~alu_clk;

34. state <= S2;

35. end

36. S2:

37. begin

38. clk2 <= ~clk2;

39. clk4 <= ~clk4;

40. alu_clk <= ~alu_clk;

41. state <= S3;

42. end

43. S3:

44. begin

45. clk2 <= ~clk2;

46. state <= S4;

47. end

48. S4:

49. begin

50. clk2 <= ~clk2;

51. clk4 <= ~clk4;

52. fetch <= ~fetch;

53. state <= S5;

54. end

55. S5:

56. begin

57. clk2 <= ~clk2;

58. state <= S6;

59. end

60. S6:

61. begin

62. clk2 <= ~clk2;

63. clk4 <= ~clk4;

64. state <= S7;

65. end

66. S7:

68. clk2 <= ~clk2;

69. state <= S8;

70. end

71. S8:

72. begin

73. clk2 <= ~clk2;

74. clk4 <= ~clk4;

75. fetch <= ~fetch;

76. state <= S1;

77. end

78. idle: state <= S1;

79. default: state <= idle;

80. endcase

81. end

82. endmodule

83. //--------------------------------------------------------------------------------

由于在时钟发生器的设计中采用了同步状态机的设计方法,不但使clk_gen模块的源程序可以被各种综合器综合,也使得由其生成的clk1、clk2、clk4、fetch、alu_clk 在跳变时间同步性能上有明显的提高,为整个系统的性能提高打下了良好的基础。

2 指令寄存器

顾名思义,指令寄存器用于寄存指令。

指令寄存器的触发时钟是clk1,在clk1的正沿触发下,寄存器将数据总线送来的指令存入高8位或低8位寄存器中。但并不是每个clk1的上升沿都寄存数据总线的数据,因为数据总线上有时传输指令,有时传输数据。什么时候寄存,什么时候不寄存由CPU状态控制器的load_ir 信号控制。load_ir信号通过ena 口输入到指令寄存器。复位后,指令寄存器被清为零。

每条指令为2个字节,即16位。高3位是操作码,低13位是地址。(CPU的地址总线为13位,寻址空间为8K字节。)本设计的数据总线为8位,所以每条指令需取两次。先取高8位,后取低8位。而当前取的是高8位还是低8位,由变量state记录。state为零表示取的高8位,存入高8位寄存器,同时将变量state置为1。下次再寄存时,由于state为1,可知取的是低8位,存入低8位寄存器中。

其VerilogHDL 程序见下面的模块:

[plain]

1. //---------------------------------------------------------------

2. module register(opc_iraddr,data,ena,clk1,rst);

3. output [15:0] opc_iraddr;

4. input [7:0] data;

5. input ena, clk1, rst;

6. reg [15:0] opc_iraddr;

7. reg state;

8.

9. always @(posedge clk1)

10. begin

11. if(rst)

12. begin

13. opc_iraddr<=16'b0000_0000_0000_0000;

14. state<=1'b0;

15. end

16. else

17. begin

18. if(ena) //如果加载指令寄存器信号load_ir到来,

19. begin //分两个时钟每次8位加载指令寄存器

20. casex(state) //先高字节,后低字节

21. 1’b0: begin

22. opc_iraddr[15:8]<=data;

23. state<=1;

24. end

25. 1’b1: begin

26. opc_iraddr[7:0]<=data;

27. state<=0;

28. end

29. default: begin

30. opc_iraddr[15:0]<=16'bxxxxxxxxxxxxxxxx;

31. state<=1'bx;

32. end

33. endcase

34. end

35. else

36. state<=1'b0;

37. end

38. end

39. endmodule

40. //--------------------------------------------------------

3.累加器

累加器用于存放当前的结果,它也是双目运算其中一个数据来源。复位后,累加器的值是零。当累加器通过ena口收到来自CPU状态控制器load_acc信号时,在clk1时钟正跳沿时就收到来自于数据总线的数据。

其VerilogHDL 程序见下面的模块:

[plain]

1. //--------------------------------------------------------------

2. module accum( accum, data, ena, clk1, rst);

3. output[7:0]accum;

4. input[7:0]data;

5. input ena,clk1,rst;

6. reg[7:0]accum;

7.

8. always@(posedge clk1)

9. begin

10. if(rst)

11. accum<=8'b0000_0000; //Reset

12. else

13. if(ena) //当CPU状态控制器发出load_acc信号

14. accum<=data; //Accumulate

15. end

16. endmodule

4.算术运算器

算术逻辑运算单元根据输入的8种不同操作码分别实现相应的加、与、异或、跳转等8种基本操作运算。利用这几种基本运算可以实现很多种其它运算以及逻辑判断等操作。

其VerilogHDL 程序见下面的模块:

[plain]

1. //------------------------------------------------------------------------------

2. module alu (alu_out, zero, data, accum, alu_clk, opcode);

3. output [7:0]alu_out;

4. output zero;

5. input [7:0] data, accum;

6. input [2:0] opcode;

7. input alu_clk;

8. reg [7:0] alu_out;

9.

10. parameter HLT =3’b000,

11. SKZ =3’b001,

12. ADD =3’b010,

13. ANDD =3’b011,

14. XORR =3’b100,

15. LDA =3’b101,

16. STO =3’b110,

17. JMP =3’b111;

18.

19. assign zero = !accum;

20. always @(posedgealu_clk)

21. begin //操作码来自指令寄存器的输出opc_iaddr<15..0>的低

3位

22. casex (opcode)

23. HLT: alu_out<=accum;

24. SKZ: alu_out<=accum;

25. ADD: alu_out<=data+accum;

26. ANDD: alu_out<=data&accum;

27. XORR: alu_out<=data^accum;

28. LDA: alu_out<=data;

29. STO: alu_out<=accum;

30. JMP: alu_out<=accum;

31. default: alu_out<=8'bxxxx_xxxx;

32. endcase

33. end

34. endmodule

35. //---------------------------------------------------------------------------- 5.数据控制器

数据控制器的作用是控制累加器数据输出,由于数据总线是各种操作时传送数据的公共通道,不同的情况下传送不同的内容。有时要传输指令,有时要传送RAM区或接口的数据。累加器的数据只有在需要往RAM区或端口写时才允许输出,否则应呈现高阻态,以允许其它部件使用数据总线。所以任何部件往总线上输出数据时,都需要一控制信号。而此控制信号的启、停,则由CPU状态控制器输出的各信号控制决定。数据控制器何时输出累加器的数据则由状态控制器输出的控制信号datactl_ena决定。

其VerilogHDL 程序见下面的模块:

[plain]

1. //--------------------------------------------------------------------

2. module datactl (data,in,data_ena);

3. output [7:0]data;

4. input [7:0]in;

5. input data_ena;

6.

7. assign data = (data_ena)? In : 8'bzzzz_zzzz;

8.

9. endmodule

10. //--------------------------------------------------------------------

6.地址多路器

地址多路器用于选择输出的地址是PC(程序计数)地址还是数据/端口地址。每个指令周期的前4个时钟周期用于从ROM中读取指令,输出的应是PC地址。后4个时钟周期用于对RAM或端口的读写,该地址由指令中给出。地址的选择输出信号由时钟信号的8分频信号fetch 提供。

其VerilogHDL 程序见下面的模块:

[plain]

1. //------------------------------------------------------------------------------

2. module adr(addr,fetch,ir_addr,pc_addr);

3. output [12:0] addr;

4. input [12:0] ir_addr, pc_addr;

5. input fetch;

6.

7.

8. assign addr = fetch? pc_addr : ir_addr;

9.

10.

11. endmodule

12. //------------------------------------------------------------------------------

7.程序计数器

程序计数器用于提供指令地址。以便读取指令,指令按地址顺序存放在存储器中。有两种途径可形成指令地址:其一是顺序执行的情况,其二是遇到要改变顺序执行程序的情况,例如执行JMP指令后,需要形成新的指令地址。复位后,指令指针为零,即每次CPU重新启动将从ROM的零地址开始读取指令并执行。每条指令执行完需2个时钟,这时pc_addr已被增2,指向下一条指令。(因为每条指令占两个字节。)如果正执行的指令是跳转语句,这时CPU状态控制器将会输出load_pc 信号,通过load口进入程序计数器。程序计数器(pc_addr)将装入目标地址(ir_addr),而不是增2。

其VerilogHDL 程序见下面的模块:

[plain]

1. //------------------------------------------------------------------------------

2. module counter ( pc_addr, ir_addr, load, clock, rst);

3. output [12:0] pc_addr;

4. input [12:0] ir_addr;

5. input load, clock, rst;

6. reg [12:0] pc_addr;

7.

8. always @( posedge clock or posedge rst )

9. begin

10. if(rst)

11. pc_addr<=13'b0_0000_0000_0000;

12. else

13. if(load)

14. pc_addr<=ir_addr;

15. else

16. pc_addr <= pc_addr + 1;

17. end

18. endmodule

19. //------------------------------------------------------------------------------ 8.状态控制器

状态控制器由两部分组成:

1. 状态机(上图中的MACHINE部分)

2. 状态控制器(上图中的MACHINECTL部分)

状态机控制器接受复位信号RST,当RST有效时通过信号ena使其为0,输入到状态机中停止状态机的工作。

状态控制器的VerilogHDL程序见下面模块:

[plain]

1. //------------------------------------------------------------------------------

2. module machinectl( ena, fetch, rst);

3. output ena;

4. input fetch, rst;

5. reg ena;

6. always @(posedge fetch or posedge rst)

7.

8.

9. begin

10. if(rst)

11. ena<=0;

12. else

13. ena<=1;

14. end

15. endmodule

16. //------------------------------------------------------------------------------

状态机是CPU的控制核心,用于产生一系列的控制信号,启动或停止某些部件。CPU何时进行读指令读写I/O端口,RAM区等操作,都是由状态机来控制的。状态机的当前状态,由变量state记录,state 的值就是当前这个指令周期中已经过的时钟数(从零计起)。

指令周期是由8个时钟周期组成,每个时钟周期都要完成固定的操作。

1. 第0个时钟,因为CPU状态控制器的输出:rd和load_ir为高电

平,其余均为低电平。指令寄存器寄存由ROM送来的高8位指

令代码。

2. 第1个时钟,与上一时钟相比只是inc_pc从0变为1故PC增1,

ROM送来低8位指令代码,指令寄存器寄存该8位代码。

3. 第2个时钟,空操作。

4. 第3个时钟,PC增1,指向下一条指令。若操作符为HLT,则输

出信号HLT为高。如果操作符不为HLT,除了PC增一外(指向

下一条指令),其它各控制线输出为零。

5. 第4个时钟,若操作符为AND、ADD、XOR或LDA,读相应地

址的数据;若为JMP,将目的地址送给程序计数器;若为STO,输出累加器数据。

6. 第5个时钟,若操作符为ANDD、ADD或XORR,算术运算器

就进行相应的运算;若为LDA,就把数据通过算术运算器送给累

加器;若为SKZ,先判断累加器的值是否为0,如果为0,PC就

增1,否则保持原值;若为JMP,锁存目的地址;若为STO,将

数据写入地址处。

7. 第6个时钟,空操作。

8. 第7个时钟,若操作符为SKZ且累加器值为0,则PC值再增1,

跳过一条指令,否则PC无变化。

状态机的VerilogHDL 程序见下面模块:

[plain]

1. //------------------------------------------------------------------------------

2. module machine( inc_pc, load_acc, load_pc, rd,wr, load_ir,

3. datactl_ena, halt, clk1, zero, ena, opcode );

4. output inc_pc, load_acc, load_pc, rd, wr, load_ir;

5. output datactl_ena, halt;

6. input clk1, zero, ena;

7. input [2:0] opcode;

8. reg inc_pc, load_acc, load_pc, rd, wr, load_ir;

9. reg datactl_ena, halt;

10. reg [2:0] state;

11.

12. parameter HLT = 3 'b000,

13. SKZ = 3 'b001,

14. ADD = 3 'b010,

15. ANDD = 3 'b011,

16. XORR = 3 'b100,

17. LDA = 3 'b101,

18. STO = 3 'b110,

红外线自动干手器课程设计

红外线自动干手器课程设计

综述 自动干手机具有风量大、噪音小、灵敏度高、使用方便、迅速和安生等的性能特点,在当今,它是一个先进和理想的卫生清洁器具和设备。广泛应用于宾馆酒店、机场车站、体育场馆等公共场所的洗手间[1]。当您洗手后,将双手伸在自动干手机的出风口下,自动干手机会自动送出舒适的暖风,迅速使您的双手去湿变干,而当您把手一离开自动干手机风口时它又自动停风关机,因而真正达到防止疾病交叉感染的要求。 其工作原理只是采用一种红外线控制的电子开关,当有人手伸过来时,红外线开关将电热吹风机自动打开,人离开时又自动将吹风机关闭。成品的自动干手器将红外线控制开关和电热吹风机制作为一体,根据这个基本原理,用一只普通的电热吹风机,加装一个红外控制开关,就可组成一个自动千手器,其效果与成品自动干手机是一样的。 在手置于干手器下部时,由于手对红外线的反射作用,接收电路中的光敏二极管将接收到的红外线变成电信号,经选频放大器,其输出信号经放大、整形、滤波变成直流信号进人比较器。比较器的门限电压设置较高,其目的是提高电路的抗干扰能力。当比较器的输人电平超过门限电压时,其输出变为低电平,触发555定时器开始定时,同时该定时器的3脚变为高电平,继电器触点吸合,接通电阻丝和风机。继电器进入暂稳态,当设定的延时时间结束后定时器的3脚变成低电平,继电器触电放开,切断电阻丝和风机,工作结束[2]。

1方案设计与分析 1.1方案设计一 本设计方案的红外线发射部分由光敏二极管,555定时器构成的多谐振荡器与红外线发射管组成,实现对由从多谐振荡器获得的电信号进行发射的功能;红外线的接收部分由集成运算放大电路和红外线接收管构成,实现对由光敏二极管发射的电信号进行接收,放大,选频的功能;由555定时器构成的单稳态电路和交流固态继电器作为该设计的延时电路,实现控制电吹风的工作与停止。 图1-1方案设计一框图 1.2方案设计二 采用BISS0001型红外传感信号专用处理集成电路与红外线热释传感器构成红外线触发电路,它可以接收到人身体发射出的红外线并通过专用的集成电路产生触发脉冲,用来触发555定时器构成的单稳态电路,单稳态电路可以提供延时功能,使干手器实现工作一定时间后自动停止的功能。SSR采用JCX-2F-DC5V型过零紧凑型固态继电器,它体积小巧,可以直接插焊在印制电路板上[3]。

精简8位cpu设计报告

精简8位cpu实验设计报告 实验介绍: 实验分为两个部分,第一部分为16*8 ROM 设计与仿真 第二部分为SAP-1 设计与仿真 实验流程: ①16*8 ROM 的设计与仿真 Rom16_8.VHDL LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ROM16_8 is PORT( DATAOUT :OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --Data Output ADDR :IN STD_LOGIC_VECTOR(3 DOWNTO 0); --ADDRESS CE :IN STD_LOGIC --Chip Enable ); END ROM16_8; ARCHITECTURE a OF ROM 16_8 IS BEGIN DATA<=“00001001”WHEN ADDR=“0000”AND CE=‘0’--LDA 9H “00011010”WHEN ADDR=“0001”AND CE=‘0’ELSE --ADD AH “00011011”WHEN ADDR=“0010”AND CE=‘0’ELSE --ADD BH “00101100”WHEN ADDR=“0011”AND CE=‘0’ELSE --SUB CH “11100000”WHEN ADDR=“0100”AND CE=‘0’ELSE --OUT “11110000”WHEN ADDR=“0101”AND CE=‘0’ELSE --HLT “00010000”WHEN ADDR=“1001”AND CE=‘0’ELSE “00010100”WHEN ADDR=“1010”AND CE=‘0’ELSE “00011000”WHEN ADDR=“1011”AND CE=‘0’ELSE

帧格式头数据检测_VerilogHDL有限状态机

题目1:串行通讯中,经常要检测数据包的开始标志,例如:USB 数据包的起 始数据是8‘b00101010设计一个电路,能够检测串行数据流中的特殊数据串,并在数据串有效时,给出相应的指示信号; (1)RTL Code /*信号定义与说明 Clk:同步时钟 rstb: 异步复位信号,低电平复位 up_down: 加/减计数方向控制信号,1为加计数 Din:串行数据输入 pat_det: 检测结果输出 */ `timescale 1ns/1ns module serialdata(din,clk,rstb,pat_det); input clk,rstb; input din; output pat_det; parameter S0='d0,S1='d1,S2='d2,S3='d3,S4='d4,S5='d5,S6='d6,IDLE='d7; reg[2:0] state; assign pat_det=(state= =S6&&din= =0)?1:0; always@(posedge clk or negedge rstb) begin if(!rstb) state<=IDLE; else begin case(state) IDLE: begin if(din==0) state<=S0; else state<=IDLE; end S0: begin if(din==0) state<=S1; else state<=IDLE; end S1: begin if(din==1) state<=S2; else state<=S1; end S2:

begin if(din==0) state<=S3; else state<=IDLE; end S3: begin if(din==1) state<=S4; else state<=S1; end S4: begin if(din==0) state<=S5; else state<=IDLE; end S5: begin if(din==1) state<=S6; else state<=S1; end S6: state<=IDLE; default: state<=IDLE; endcase end end endmodule (2)Test File `timescale 1ns/1ns `include "serialdata.v" module tb_serialdata; reg clk,rstb; wire din; wire pat_det; reg[31:0] data; assign din=data[31]; serialdata t1(din,clk,rstb,pat_det); initial begin clk=1'b0; rstb=1'b0; data=32'b1001_0010_1010_1100_1010_1000_1010_1010; #10 rstb=1'b1; #640 $stop; end

自动干手器课程设计

目录 第一章方案论证 (1) 第一节方案论证 (1) 第二章工作方案设计 (2) 第一节工作方案设计 (2) 附录 附录一工作原理图 (7) 附录二元件 (8) 元件清单 (8) 元件介绍 (9) 总结与体会 (17) 总结 (17) 体会 (17) 参考文献 (18)

摘要:自动干手器是一种高档卫生洁具,广泛应用于宾馆酒店、机场车 站、体育场馆等公共场所的洗手间。其工作原理只是采用一种红外线控制的电子开关,当有人手伸过来时,红外线开关将电热吹风机自动打开,人离开时又自动将吹风机关闭。成品的自动干手器将红外线控制开关和电热吹风机制作为一体,根据这个基本原理,用一只普通的电热吹风机,加装一个红外控制开关,就可组成一个自动千手器,其效果与成品自动干手器是一样的。 它是由红外线发射电路,红外线接收电路,时间延迟电路,自动干手器开关电路和电源电路五部分构成的。 当输出端Q输出低电平时,三极管截止,无电流通过。继电器连接的集电极,当有电流驱动时,开关吸合,电磁阀通电,吹风机吹出热T 1 风;当无电流驱动时,开关断开,电磁阀不通电,吹风机不吹出热风,同时在继电器两端并联一个二极管实现保护。同时电路中加入发光二极作为显示电路,显示吹风机是否启动。 管D 3 这样输出电路端Q产生脉冲信号来控制红外线发光二极管发射光脉冲,二极管D 起保护红外发光二极管的作用。 1 关键字:红外线发射器红外线接收放大器自动干手器开关控制器时间延迟电路电源电路 第一章 第一节:方案论证 自动干手器是一种高档卫生洁具,广泛应用于宾馆酒店、机场车站、体育场馆等公共场所的洗手间。其工作原理只是采用一种红外线控制的电子开关,当有人手伸过来时,红外线开关将电热吹风机自动打开,人离开时又自动将吹风机关闭。成品的自动干手器将红外线控制开关和电热吹风机制作为一体,根据这个基本原理,用一只普通的电热吹风机,加装一个红外控制开关,就可组成一个自动千手器,其效果与成品自动干手器是一样的。该红外线自动干手器电路由红外线发射器、红外线接收放大器和开关控制器组成。利用555定时器及多谐振荡器和单稳态触发器等元件即可组成红外线自动干手器电路。 根据设计任务与要求,当人们需要干手时,人们把手靠近干手器时,自动干手器会自动打开加热装置和吹风装置一段时间后会自动停止,并可以通过NE555自动的可变电阻器进行调节。

计算机硬件课程设计报告(cpu设计)

计算机硬件课程设计 设计报告 学号: 姓名:成绩: 学号: 姓名:成绩: 东南大学计算机科学与工程系 二0 10 年11 月

一、设计名称: My CPU的设计 二、本设计的主要特色: 1、熟悉挂总线的逻辑器件的特性和总线传送的逻辑实现方法。 2、掌握半导体静态存储器的存取方法。 三、设计方案: 1. 数据格式——8位二进制定点表示 2. 指令系统——CPU的指令格式尽量简单规整,这样在硬件上更加容易实现。 7条基本指令:输入/输出,数据传送,运算,程序控制。 指令格式:Array 7 6 5 4 3 2 1 0 两种寻址方式: 寄存器寻址Array 7 6 5 4 3 2 1 0 直接地址寻址,由于地址要占用一个字节,所以为双字节指令。 7条机器指令:

IN R目:从开关输入数据到指定的寄存器R目。 OUT R源:从指定的寄存器R源中读取数据送入到输出缓冲寄存器,显示灯亮。 ADD R目,R源:将两个寄存器的数据相加,结果送到R目。 JMP address : 无条件转移指令。 HALT : 停机指令。 LD R目,address : 从内存指定单元中取出数据,送到指定寄存器R 目。 ST address , R 源: 从指定的寄存器R源中取出数据,存入内存指定单元。

Address(内存地址) 3. CPU内部结构 4.数据通路设计 根据指令系统,分析出数据通路中应包括寄存器组、存储器、运算器、多路转换器等,采用单总线结构。 通用寄存器组:

运算器: 存储器: 多路转换器:

输出缓冲器: 5.控制器设计 控制通路负责整个CPU的运行控制,主要由控制单元和多路选择器MUX 完成。在每一个时钟周期的上升沿指令寄存器IR 从内存中读取指令字后,控制单元必须能够根据操作码,为每个功能单元产生相应主控制信号,以及对ALU 提供控制信号。对于不同的指令,同一个功能单元的输入不同,需要多路选择器MUX 来对数据通路中功能单元的输入进行选择。

verilog可综合有限状态机的4种写法(夏文宇书注)

verilog可综合有限状态机的4种写法(夏文宇书注) 第一种:自然编码 module fsm1( input i_clk, input rst_n, input A, output reg K1, output reg K2, output reg [1:0] state ); parameter Idle=2'b00, Start=2'b01, Stop=2'b10, Clear=2'b11; [email=always@(posedge]always@(posedge[/email] i_clk) if(!rst_n) begin state<=Idle; K2<=0; K1<=0; end else case(state) Idle:if(A) begin state<=Start; K1<=0; end else begin state<=Idle; K2<=0; K1<=0; end Start:if(!A) state<=Stop; else state<=Start; Stop:if(A) begin state<=Clear; K2<=1;

else begin state<=Stop; K2<=0; K1<=0; end Clear:if(!A) begin state<=Idle; K1<=1; K2<=0; end else begin state<=Clear; K2<=0; K1<=1; end default: state<=Idle; endcase endmodule 这种大家应该都熟悉的 第二种:采用独热编码,据说其可靠性和速度都不错module fsm2( input i_clk, input rst_n, input A, output reg K1, output reg K2, output reg [3:0] state ); parameter Idle=4'b1000; parameter Start=4'b0100; parameter Stop=4'b0010; parameter Clear=4'b0001; always@(posedge i_clk) begin if(!rst_n)

红外线自动干手器课程设计

综述 自动干手机具有风量大、噪音小、灵敏度高、使用方便、迅速和安生等的性能特点,在当今,它是一个先进和理想的卫生清洁器具和设备。广泛应用于宾馆酒店、机场车站、体育场馆等公共场所的洗手间[1]。当您洗手后,将双手伸在自动干手机的出风口下,自动干手机会自动送出舒适的暖风,迅速使您的双手去湿变干,而当您把手一离开自动干手机风口时它又自动停风关机,因而真正达到防止疾病交叉感染的要求。 其工作原理只是采用一种红外线控制的电子开关,当有人手伸过来时,红外线开关将电热吹风机自动打开,人离开时又自动将吹风机关闭。成品的自动干手器将红外线控制开关和电热吹风机制作为一体,根据这个基本原理,用一只普通的电热吹风机,加装一个红外控制开关,就可组成一个自动千手器,其效果与成品自动干手机是一样的。 在手置于干手器下部时,由于手对红外线的反射作用,接收电路中的光敏二极管将接收到的红外线变成电信号,经选频放大器,其输出信号经放大、整形、滤波变成直流信号进人比较器。比较器的门限电压设置较高,其目的是提高电路的抗干扰能力。当比较器的输人电平超过门限电压时,其输出变为低电平,触发555定时器开始定时,同时该定时器的3脚变为高电平,继电器触点吸合,接通电阻丝和风机。继电器进入暂稳态,当设定的延时时间结束后定时器的3脚变成低电平,继电器触电放开,切断电阻丝和风机,工作结束[2]。

1方案设计与分析 1.1方案设计一 本设计方案的红外线发射部分由光敏二极管,555定时器构成的多谐振荡器与红外线发射管组成,实现对由从多谐振荡器获得的电信号进行发射的功能;红外线的接收部分由集成运算放大电路和红外线接收管构成,实现对由光敏二极管发射的电信号进行接收,放大,选频的功能;由555定时器构成的单稳态电路和交流固态继电器作为该设计的延时电路,实现控制电吹风的工作与停止。 图1-1方案设计一框图 1.2方案设计二 采用BISS0001型红外传感信号专用处理集成电路与红外线热释传感器构成红外线触发电路,它可以接收到人身体发射出的红外线并通过专用的集成电路产生触发脉冲,用来触发555定时器构成的单稳态电路,单稳态电路可以提供延时功能,使干手器实现工作一定时间后自动停止的功能。SSR采用JCX-2F-DC5V型过零紧凑型固态继电器,它体积小巧,可以直接插焊在印制电路板上[3]。

CPU课程设计报告

课程设计报告 课程片上计算机系统 题目 CPU模型机设计 班级 专业 学生 学号 指导教师 2014年7 月 3 日 目录: 1.课程设计的目的及要求 (3) 2.处理器的设计思想和设计内容 (3)

3.设计处理器的结构和实现方法 (3) 4.模型机的指令系统 (4) 5.处理器的状态跳转操作过程 (4) 6. CPU的Verilog代码 (7) 7. 模型机在Quartus II环境下的应用 (19) 8. 仿真波形 (19) 9. 课程设计的总结 (21) 一.课程设计的目的及要求: (一)目的: 1.掌握RISC CPU与内存数据交换的方法。 2.学会指令格式的设计与用汇编语言编写简易程序。 3.能够使用VHDL硬件描述语言在QuartusⅡ软件环境下完成CPU模型机的 设计。

(二)要求: 1.以《计算机组成与设计》书中123页的简化模型为基础更改其指令系 统,形成设计者的CPU, 2.在Quartus II环境下与主存连接,调试程序,观察指令的执行是否达 到设计构想。 二.处理器的设计思想和设计内容: 处理器的字长为16b;包括四种指令格式,格式1、格式2、格式3的指令字长度为8b,格式4的指令字长度为16b;处理器内部的状态机包括七个状态。(一)关于修改后的CPU: 一共设计25条指令,主要包括空操作指令、中断指令、加法指令、减法指令、加法指令、四种逻辑运算指令、比较、算术移位操作指令、逻辑移位操作指令、加减1指令、加减2指令、数据传输指令、转移类指令、读写指令、特权指令等等。 (二)关于RAM: 地址线设置成8bits,主存空间为4096words。 三.设计处理器的结构和实现方法: (指令格式) 格式1:寄存器寻址方式 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OP Rx Ry 空白 格式2:寄存器变址寻址方式 OP Ry 空白 格式3:立即数寻址方式 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OP I 空白 格式4:无操作数寻址方式 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OP 空白空白 格式5:直接寻址方式 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OP Addr 内存(2的12次方) 四.模型机的指令系统 CPU的指令集: 操作码OP IR(15..1 2) 指令 格式 指令的助记指令的内容

Verilog三段式状态机的建模方法和注意事项

Verilog三段式状态机(FSM) 网上收集整理…… 时序电路的状态是一个状态变量集合,这些状态变量在任意时刻的值都包含了为确定电路的未来行为而必需考虑的所有历史信息。 状态机采用VerilogHDL语言编码,建议分为三个always段完成。这是为什么呢? 设计FSM的方法和技巧多种多样,但是总结起来有两大类:第一种,将状态转移和状态的操作和判断等写到一个模块(process、block)中。另一种是将状态转移单独写成一个模块,将状态的操作和判断等写到另一个模块中(在Verilog代码中,相当于使用两个“always”block)。其中较好的方式是后者。其原因如下。 首先FSM和其他设计一样,最好使用同步时序方式设计,好处不再累述。而状态机实现后,状态转移是用寄存器实现的,是同步时序部分。状态的转移条件的判断是通过组合逻辑判断实现的,之所以第二种比第一种编码方式合理,就在于第二种编码将同步时序和组合逻辑分别放到不同的程序块(process,block)中实现。这样做的好处不仅仅是便于阅读、理解、维护,更重要的是利于综合器优化代码,利于用户添加合适的时序约束条件,利于布局布线器实现设计。 三段式建模描述FSM的状态机输出时,只需指定case敏感表为次态寄存器,然后直接在每个次态的case分支中描述该状态的输出即可,不用考虑状态转移条件。 三段式描述方法虽然代码结构复杂了一些,但是换来的优势是使FSM做到了同步寄存器输出,消除了组合逻辑输出的不稳定与毛刺的隐患,而且更利于时序路径分组,一般来说在FPGA/CPLD等可编程逻辑器件上的综合与布局布线效果更佳。 示例如下: //第一个进程,同步时序always模块,格式化描述次态寄存器迁移到现态寄存器 always @ (posedge clk or negedge rst_n) //异步复位 if(!rst_n) current_state <= IDLE; else current_state <= next_state;//注意,使用的是非阻塞赋值 //第二个进程,组合逻辑always模块,描述状态转移条件判断 always @ (current_state) //电平触发 begin next_state = x; //要初始化,使得系统复位后能进入正确的状态 case(current_state) S1: if(...) next_state = S2; //阻塞赋值 ... endcase end

简易自动干手电路

摘要 近些年来,随着科学的发展,酒店、车站、网络会所等越来越多的公共场所的洗手间装有自动洗手器和自动干手器,给人们带来了很大的方便。其中,自动干手器是采用一种红外线控制的电子开关,当有人手伸过来时,手对红外线的反射作用,使红外线开关将电热吹风机自动打开,一段时间后,吹风机自动关闭。 自动干手电路是由红外线发射电路,红外线接收电路,时间延迟电路,自动干手器开关电路和电源电路五部分构成,合成后形成自动干手器。当时间延迟电路输出低电平时,继电器两端电压均为低电平,继电器不工作,开关断开,吹风机不吹出热风;当输出高电平,继电器有电压驱动,开关吸合,电磁阀通电,吹风机吹出热风,同时在继电器两端并联一个二极管实现保护。 关键词红外线发射器红外线接收放大器自动干手器开关控制器时间延迟电路电源电路

目录 第一章方案论证 (3) 第二章工作方案设计 (4) 第一节总体设计 (4) 第二节主要单元电路设计 (5) (一)红外线发射电路 (5) (二)红外接收放大电路 (6) (三)时间延迟电路 (7) (四) 吹风机开关电路 (8) (五)电源电路.................... (9) 第三章芯片简介 (9) 第一节 NE555 (9) 第二节 CD4069 (12) 总结与体会 (13) 参考文献 (14) 附录一元件清单 (15) 附录二工作原理图 (17)

第一章方案论证 自动干手器是一种高档卫生洁具,广泛应用于宾馆酒店、机场车站、体育场馆等公共场所的洗手间。其工作原理只是采用一种红外线控制的电子开关,当有人手伸过来时,红外线开关将电热吹风机自动打开,人离开时又自动将吹风机关闭。 成品的自动干手器将红外线控制开关和电热吹风机制作为一体,根据这个基本原理,用一只普通的电热吹风机,加装一个红外控制开关,就可组成一个自动千手器,其效果与成品自动干手器是一样的。经过查资料得知,以下两个方案。 方案一:红外线自动干手器电路由红外线发射器、红外线接收放大器和开关控制器组成。利用555定时器及多谐振荡器和单稳态触发器等元件即可组成红外线自动干手器电路。当人们需要干手时,人们把手靠近干手器时,由于手对红外线的反射作用,使555定时器构成的单稳态触发器产生一段时间的高电平定时。控制自动干手器会打开加热装置和吹风装置一段时间后会自动停止,并可以通过NE555自动的可变电阻器进行调节。 方案二:由单片机80C2051构成的最小系统,加上外围采用8个光电耦合管,大大提高了敏感度,由于手对红外线反射,光电耦合管接收产生一个高电平,通过单片机的I/O口如P1读取其状态,若检测到该口是高电平,通过程序控制另外一个I/O如P3^1输出一个高电平通过三极管放大驱动继电器工作,电机就开始工作,通过单片机中断定时。达到自动控制的目的。 比较上述两种方案,看似第二种方案更简单,不过其需要硬软件相结合,增加的原理上的理解难度,不符合本设计要求,而

verilog有限状态机实验报告(附源代码)

有限状态机实验报告 一、实验目的 ●进一步学习时序逻辑电路 ●了解有限状态机的工作原理 ●学会使用“三段式”有限状态机设计电路 ●掌握按键去抖动、信号取边沿等处理技巧 二、实验内容 用三段式有限状态机实现序列检测功能电路 a)按从高位到低位逐位串行输入一个序列,输入用拨动开关实现。 b)每当检测到序列“1101”(不重叠)时,LED指示灯亮,否则灭,例如 i.输入:1 1 0 1 1 0 1 1 0 1 ii.输出:0 0 0 1 0 0 0 0 0 1 c)用八段数码管显示最后输入的四个数,每输入一个数,数码管变化一次 d)按键按下的瞬间将拨动开关状态锁存 i.注意防抖动(按键按下瞬间可能会有多次的电平跳变) 三、实验结果 1.Rst_n为0时数码管显示0000,led灯不亮,rst_n拨为1,可以开始输入,将输 入的开关拨到1,按下按钮,数码管示数变为0001,之后一次类推分别输入1, 0,1,按下按钮后,数码管为1101,LED灯亮,再输入1,LED灯灭,之后再输 入0,1(即共输入1101101使1101重叠,第二次LED灯不亮),之后单独输入

1101,LED灯亮 2.仿真图像 刚启动时使用rst_n 一段时间后 其中Y代表输出,即控制led灯的信号,sel表示数码管的选择信号,seg表示数码管信号 四、实验分析 1、实验基本结构

其中状态机部分使用三段式结构: 2、整体结构为:

建立一下模块: Anti_dither.v 输入按键信号和时钟信号,输出去除抖动的按键信号生成的脉冲信号op 这一模块实现思路是利用按钮按下时会持续10ms以上而上下抖动时接触时间不超过10ms来给向下接触的时间计时,达到上限时间才产生输出。 Num.v 输入op和序列输入信号A,时钟信号clk和复位信号,复位信号将num置零,否则若收到脉冲信号则将num左移一位并将输入存进最后一位。输出的num即为即将在数码管上显示的值 Scan.v 输入时钟信号,对其降频以产生1ms一次的扫描信号。 Trigger.v 这一模块即为状态机模块,按三段式书写。 整个模块的输入为时钟信号,脉冲信号,序列输入变量,复位信号,输出LED灯控制信号Y。 第一段是状态转换模块,为时序逻辑电路,功能是描述次态寄存器迁移到现态寄存器。即如果收到复位信号将现态置零,否则将上次得到的next_state赋给current_state。

红外控制报警器

课程设计说明书 课程设计名称:模拟电路课程设计 课程设计题目:红外控制报警器 学院名称:南昌航空大学信息工程学院专业:班级: 学号:姓名: 评分:教师: 20 年月日

学年第学期第第周 题目红外遥控报警器 内容及要求 ①当有人遮挡红外光时发出报警信号,无人遮挡红外光时报警器不工作; ②红外发射器,发射频率为30kHz,控制距离≥2m; ③报警信号频率800Hz。 进度安排 第7周:查阅资料,学习仿真软件,确定方案,完成原理图设计及仿真; 第8周:领元器件、仪器设备,制作、焊接、调试电路,完成系统的设计; 第9周:检查设计结果、撰写课设报告。 姓名: 指导时间:周二周三周四指导地点: 任务下 达 任务完成 考核方式:1评阅 2答辩 3实际操作 4其他 指导教师韦芙芽系(部)主 任 注:1、此表一组一表二份,课程设计小组组长一份;任课教师授课时自带一份备查。 2、课程设计结束后与“课程设计小结”、“学生成绩单”一并交院教务存档

摘要 红外线是一种光线,是太阳光中众多不可见光中的一种,具有普通光的性质,可以以光速直线传播。红外线由德国科学家霍胥尔于1800年发现,又称为红外线辐射(Infrared radiation)。红外线可分为三部分,即近红外线,波长为0.75-1.50μm之间;中红外线,波长为1.50-6.0μm之间;远红外线,波长为6.0-1000μm之间。随着科学技术的发展,红外线越来越广泛的应用于通讯、军事、航天、医疗、考古、天文、探测等科学领域,即使在日常生活和农业生产中也广泛应用到红外技术。如红外线取暖器、红外自动干手器、红外线报警器、远红外粮食烘干等。 红外报警器的制作意义则体现在报警上,首先设计电路图,该电路图由一个发射电路和接收电路构成。经过仿真软件仿真,元件排版焊接,最终实现报警功能。为了深入的学习电子技术基础这门课程并将所学的知识结合实际应用于生活,本报警器可以实现对局部通道的监控报警作用,也可用来对重要物品的保护。 关键词:红外线控制报警

《单周期CPU设计》实验报告

《计算机组成原理与接口技术实验》 实验报告 学院名称: 学生姓名: 学号: 专业(班级): 合作者: 时间:2016 年4 月25 日 成绩: ________ 实验二: 一. 实验目的 1.掌握单周期CPU数据通路图的构成、原理及其设计方法; 2.掌握单周期CPI的实现方法,代码实现方法; 3.认识和掌握指令与CPU勺关系; 4.掌握测试单周期CPI的方法。 二. 实验内容 设计一个单周期CPU,该CPU至少能实现以下指令功能操作。需设计的指令

与格式如下:

==>算术运算指令 功能:rd Jrs + rt 。 reserved为预留部分,即未用,一般填“0 (2)addi rt , rs , immediate 功能:rt J rs + (sign-extend) immediate ;immediate 符号扩展再参加“加”运算(3) sub rd , rs , rt 完成功能:rd J rs - rt ==>逻辑运算指令 (4)ori rt , rs , immediate 功能:rt Jrs | (zero-extend) immediate ; immediate 做“ o ”扩展再参加“或”运算(5) and rd , rs , rt 功能:rd Jrs & rt ;逻辑与运算 (6)or rd , rs , rt 功能:rd Jrs | rt ;逻辑或运算。 ==>传送指令 功能:rd Jrs + $0 ; $0=$zero=0。 ==>存储器读/写指令 (8)sw rt , immediate( rs)写存储器 功能:memory[rs+ (sign-extend) immediate ] J rt ; immediate 符号扩展再 相加。

红外线自动干手器电路设计

摘要 成绩 山东理工大学 电气与电子工程学院 课程设计说明书设计题目: 专业班级: 学生姓名: 学号: 指导教师: 起止日期: 摘要

自动干手机是一种高档卫生洁具,广泛应用于宾馆酒店、机场车站、体育场馆等公共场所的洗手间。其工作原理是采用一种红外线控制的电子开关,当有人手伸过来时,红外线开关将电热吹风机自动打开,人离开时又自动将吹风机关闭。 自动干手电路是由红外线发射电路,红外线接收电路,时间延迟电路,吹风机开关电路和电源电路五部分构成的。 在红外线发射电路中,输出电路端Q产生脉冲信号来控制红外线发光二极管 起保护红外发光二极管的作用。 发射光脉冲,二极管D 1 在时间延迟和吹风机开关电路中,当输出端Q输出低电平时,三极管截止,无电流通过。继电器与三极管集电极相连,当有电流驱动时,开关吸合,电磁阀通电,电路闭合,吹风机吹出热风;当无电流驱动时,开关断开,电磁阀不通电,电路断开,吹风机不吹出热风。同时在继电器两端并联一个二极管实现保护,在电路中加入发光二极管D 作为显示电路,显示吹风机是否启动。 3 关键字: 红外线发射电路红外线接收放大电路吹风机开关控制电路时间延迟电路电源电路

ABSTRACT ABSTRACT Automatic dry cell phone is a kind of high-grade sanitary ware, widely used in hotels, airport station, sports stadiums and other public places of the bathroom. The working principle of adopting a infrared control of electronic switch, when a hand stretch to come over, infrared switch will electric blower automatically open, the man left and automatic will blower closed. Automatic circuit is dry hands by infrared emission circuit, infrared receiver circuits, time delay circuit, hair dryer switch circuit and power circuit composed of five parts. In the infrared emission circuit, the output power LuDuan Q produce the pulse signal to control the infrared emitting diode launch a light pulse, diode D1 infrared leds on protection of the role. In the time delay and hair dryer switch circuit, when the output low electricity output Q at ordinary times, the transistor, no current through the. Relay and triode connected to the collector, when a current drivers, switch suck close, electromagnetic valve electricity, closed circuit, blower, the hot air; When no current drivers, switch, solenoid valves no electricity, circuit disconnect, hair dryer don't blow hot air out. At the same time in the relay ends a diode in parallel to realize protection, in a circuit to join leds D3 as show circuit, show hair dryer is active Key word: infrared emission circuit Infrared receiver amplifier circuit Hair dryer switch control circuits Time delay circuit Power supply circuit

CPU设计实验报告

实验中央处理器的设计与实现 一、实验目的 1、理解中央处理器的原理图设计方法。 2、能够设计实现典型MIPS的11条指令。 二、实验要求 1、使用Logisim完成数据通路、控制器的设计与实现。 2、完成整个处理器的集成与验证。 3、撰写实验报告,并提交电路源文件。 三、实验环境 VMware Workstations Pro + Windows XP + Logisim-win-2.7.1 四、操作方法与实验步骤 1、数据通路的设计与实现 数据通路主要由NPC、指令存储器、32位寄存器文件、立即数扩展部件、ALU、数据存储器构成。其中指令存储器和数据存储器可直接调用软件库中的ROM和RAM元件直接完成,其余部件的设计如图所示: 图1.1 NPC

图1.2 32位寄存器

图1.3 立即数扩展部件 图1.4 ALU 2、控制器的设计与实现 控制器的主要设计思想如图所示 图2.1 控制器设计思想 输入 1 1 0

输出R-type ORI LW SW BEQ JUMP RegDst 1 0 0 x x x ALUSrc 0 1 1 1 0 x MemtoReg0 0 1 x x x RegWrite 1 1 1 0 0 0 MemWrite0 0 0 1 0 0 Branch 0 0 0 0 1 0 Jump 0 0 0 0 0 1 Extop x 0 1 1 1 x ALUop2 1 0 0 0 0 x ALUop1 x 1 0 0 x x ALUop0 x 0 0 0 1 x ALUop[2:0] Funct[3:0] 指令ALUctr[2:0] 111 0000 add 010 111 0010 sub 110 111 0100 and 000 111 0101 or 001 111 1010 slt 111 010 xxxx ori 001 000 xxxx Lw/sw 010 011 xxxx beq 110 表2.1 控制器设计真值表

简易干手器课程设计

郑州轻工业学院 电子技术课程设计 题目:简易自动干手器姓名: ******* 专业班级:建筑电气12-01班学号: 541201040114 院(系):电气信息工程学院指导教师:郑晓婉 完成时间:2014年2月 24日

课程设计任务书 题目简易自动干手电路专业建筑电气与智能化 学号 541201040114 姓名******* 主要内容、基本要求、主要参考资料等: 主要内容 1.阅读相关科技文献。 2.学习protel软件的使用。 3.学会整理和总结设计文档报告。 4.学习如何查找器件手册及相关参数。 技术要求 1.要求电路能够通过感应装置,在人们需要干手时,自动打开加热和吹 风装置。 2.要求电路在打开加热和吹风装置一段时间后,自动关断开关。 3.要求电路能够调节加热和吹风装置开关打开的时间。 主要参考资料 1.何小艇,电子系统设计,浙江大学出版社,2001年6月 2.姚福安,电子电路设计与实践,山东科学技术出版社,2001年10月3.王澄非,电路与数字逻辑设计实践,东南大学出版社,1999年10月4.李银华,电子线路设计指导,北京航空航天大学出版社,2005年6月5.康华光,电子技术基础,高教出版社,2003 完成期限: 2014年2月24日 指导教师签章: 专业负责人签章:

2014 年 2 月 23日 简易干手器 摘要 近些年来,随着科学的发展,酒店、车站、网络会所等越来越多的公共场所的洗手间装有自动洗手器和自动干手器,给人们带来了很大的方便。其中,自动干手器是采用一种红外线控制的电子开关,当有人手伸过来时,手对红外线的反射作用,使红外线开关将电热吹风机自动打开,一段时间后,吹风机自动关闭。 自动干手电路是由红外线发射电路,红外线接收电路,时间延迟电路,自动干手器开关电路和电源电路五部分构成,合成后形成自动干手器。当时间延迟电路输出低电平时,继电器两端电压均为低电平,继电器不工作,开关断开,吹风机不吹出热风;当输出高电平,继电器有电压驱动,开关吸合,电磁阀通电,吹风机吹出热风,同时在继电器两端并联一个二极管实现保护。 关键词红外线发射器红外线接收放大器自动干手器开关控制器时间延迟电路电源电路

CPU与简单模型机设计 实验报告汇总

计算机科学与技术系 实验报告 专业名称计算机科学与技术 课程名称计算机组成与结构 项目名称 CPU与简单模型机设计实验 班级 学号 姓名 同组人员无 实验日期 2015-11-15

一、实验目的 1.掌握一个简单CPU的组成原理; 2.在掌握部件单元电路的基础上,进一步将其构造一台基本模型计算机; 3.为其定义五条机器指令,编写相应的微程序,并上机调试掌握整机概念。 二、实验逻辑原理图与分析 2.1 实验逻辑原理图及分析 本实验要实现一个简单的CPU,并且在此CPU的基础上,继续构建一个简单的模型计算机。CPU由运算器(ALU)、微程序控制器(MC)、通用寄存器(RO)、指令寄存器(IR)、程序计数器(PC)和地址寄存器(AR)组成,如图下图所示。这个CPU在写入相应的微指令后,就具备了执行机器指令的功能,但是机器指令一般存放在主存当中,CPU必须和贮存挂接后,才有实际的意义,所以还需要在该CPU的基础上增加一个主存和基本的输入输出部件,以构成一个简单的模型计算机。 基本CPU构成原理图 系统的程序计数器(PC)和地址寄存器(AR)集成在一片CPLD芯片中。CLR连接至CON单元的纵情断CLR,按下CLR按钮,将是PC清零,LDPC和T3相与后作为计数器的计数时钟,当LOAD为低时,计数时钟到来后将CPU内总线的数据打入PC。 程序计数器(PC)原理图

2.2 逻辑原理图分析 本模型机;和前面微程序控制器实验相比,新增加一条跳转指令JMP,供有五条指令:IN(输入)、ADD(二进制加法)、OUT(输出)、JMP(无条件转移)、HLT(停机)、其指令格式瑞霞(高4为为操作码): 其中JMP为双字节指令,其余均为单字节指令,********为addr对应的二进制地址码。微程序控制器实验的指令是通过手动给出的,现在要求CPU自动从存储器读取指令并执行。 系统涉及到的微程序流程如下图所示,当拟定“取指”微指令时,该微指令的判别测试字段为P<1>测试。由于“取指”微指令是所有微程序都使用的公用微指令,因此P<1>的测试结果出现多分支。本机用指令寄存器的高6位(IR7—IR2)作为测试条件,出现5路分支,占用5个固定为地址单元,剩下的其他地方就可以一条微指令占用控制一个微地址单元随意填写,微程序流程图上的但愿地址为16进制。 当全部为程序设计完毕后,应将每条微指令代码化,下表即为将下图的微程序流程图按微指令格式转化而成的“二进制微代码表”。 简单模型机微程序流程图

Verilog状态机的写法

Verilog状态机的写法-转 1 引言 Verilog HDL作为当今国际主流的HDL语言,在芯片的前端设计中有着广泛的应用。它的语法丰富,成功地应用于设计的各个阶段:建模、仿真、验证和综合等。可综合是指综合工具能将Verilog HDL代码转换成标准的门级结构网表,因此代码的描述必须符合一定的规则。大部分数字系统都可以分为控制单元和数据单元两个部分,控制单元的主体是一个状态机,它接收外部信号以及数据单元产生的状态信息,产生控制信号,因而状态机性能的好坏对系统性能有很大的影响。 有许多可综合状态机的Verilog代码描述风格,不同代码描述风格经综合后得到电路的物理实现在速度和面积上有很大差别。优秀的代码描述应当易于修改、易于编写和理解,有助于仿真和调试,并能生成高效的综合结果。 2 有限状态机 有限状态机(Finite State Machine,FSM)在数字系统设计中应用十分广泛。根据状态机的输出是否与输入有关,可将状态机分为两大类:摩尔(Moore)型状态机和米莉 (Mealy)型状态机。Moore型状态机的输出仅与现态有关;Mealy型状态机的输出不仅与现态有关,而且和输入也有关。图1是有限状态机的一般结构图,它主要包括三个部分,其中组合逻辑部分包括状态译码器和输出译码器,状态译码器确定状态机的下一个状态,输出译码器确定状态机的输出,状态寄存器属于时序逻辑部分,用来存储状态机的内部状态。 图1 状态机的结构框图 2.1 好的状态机标准 好的状态机的标准很多,最重要的几个方面如下: 第一,状态机要安全,是指FSM不会进入死循环,特别是不会进入非预知的状态,而且由于某些扰动进入非设计状态,也能很快的恢复到正常的状态循环中来。这里面有两层含义。其一要求该FSM的综合实现结果无毛刺等异常扰动,其

相关文档
最新文档