收藏 分销(赏)

计算机组成原理FPGA实验指导书模板.doc

上传人:快乐****生活 文档编号:4453885 上传时间:2024-09-23 格式:DOC 页数:80 大小:1.14MB
下载 相关 举报
计算机组成原理FPGA实验指导书模板.doc_第1页
第1页 / 共80页
计算机组成原理FPGA实验指导书模板.doc_第2页
第2页 / 共80页
计算机组成原理FPGA实验指导书模板.doc_第3页
第3页 / 共80页
计算机组成原理FPGA实验指导书模板.doc_第4页
第4页 / 共80页
计算机组成原理FPGA实验指导书模板.doc_第5页
第5页 / 共80页
点击查看更多>>
资源描述

1、资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。计算机组成原理实验指导书计算机科学与技术学院目录实验一 熟悉实验平台(3)实验二 总线传送(10)实验三 运算器的设计与调试(14)实验四 存贮器的设计与调试(20)实验五 控制器的设计与调试.(26)附 录 常见器件简介(30)实验一 熟悉实验平台一实验目的1. 熟悉使用Verilog硬件描述语言2. 熟悉ISE开发环境3. 掌握实验箱组成4. 熟悉时序发生器的组成原理; 5. 掌握数字逻辑器件Verilog语言的编写; 二实验设备1. 装有ISE10.1的PC机一台2. EDK-3SAISE实验箱一台三实验内容1.节拍信号T1T

2、4波形如图-1所示 图-1 节拍时序波形图每个节拍内均包含脉冲clk_m1。节拍信号有三种工作方式。这三种工作方式受Clk_sel, Clk_sel1电平开关组合控制。Clk_selClk_sel1功能说明00连续时标方式01单周期时标方式10单周期时标方式11单拍时标方式时标信号的启动, 停止受Button,Rstn按钮开关控制。2.用Verilog语言实现时序代码如下: module Timeen( input Clk, /System Clock 40Mhz input Button, / setep clock input Rstn, / reset, low active input

3、 Clk_sel, / sequence timing or step timing select input Clk_sel1, output 4:1 t, / Display( T1-T4) output M1 );wire Clk_m1;wire Clk_i,Clk_ii;wire PB_R;assign M1=Clk_m1;GenClk_i Clk_i_Module ( .Clk_s(Clk), .Clk_i(Clk_i), .Rstn(Rstn) );GenClk_ii Clk_ii_Module ( .PB_R(PB_R), .Clk(Clk), .Clk_ii(Clk_ii) )

4、;Debouncer Debouner_Module ( .Clk_s(Clk), .PB(Button), .PB_state(), .PB_up(PB_R), .PB_down() );ClkSel ClkSel_Module ( .Clk_s(Clk), .Clk_i(Clk_i), .Clk_ii(Clk_ii), .Clk_m1(Clk_m1), .Clk_sel(Clk_sel), .Clk_sel1(Clk_sel1) );Bit1_Display Bit1_Display_Module ( .Clk_s(Clk), .Clk_m1(Clk_m1), .T(t), .Rstn(R

5、stn), .Clk_i(Clk_i) );endmodulemodule GenClk_i( input Clk_s, output Clk_i, input Rstn );reg 24:0 Cnt;assign Clk_i= Cnt24;always(posedge Clk_s or negedge Rstn)beginif (!Rstn) Cnt=0;else Cnt = Cnt + 1;end endmodulemodule GenClk_ii( input PB_R, input Clk, output Clk_ii ); reg Clk_o,Clk_o1,Clk_o2;assign

6、 Clk_ii=Clk_o2; always(posedge Clk )beginClk_o=PB_R;Clk_o1=Clk_o;Clk_o2=Clk_o1;endendmodulemodule Debouncer(Clk_s, PB, PB_state, PB_up, PB_down);input Clk_s; / clk 时钟信号input PB; / PB 有毛刺的、 异步的、 低有效的按键信号output PB_state; / 当按键被按下时输出1 output PB_down; / 按键被按下的瞬间输出一个高电平脉冲output PB_up; / 按键被松开的瞬间输出一个高电平脉冲

7、/ 首先使用两个触发器来同步PB信号reg PB_sync_0; always (posedge Clk_s) PB_sync_0 = PB; / 翻转PB, 使之高有效reg PB_sync_1; always (posedge Clk_s) PB_sync_1 = PB_sync_0;/ 声明一个16位的剖?reg 21:0 PB_cnt;/ 当按键被按下或松开时, 计数?/ 当计数器计数溢出时, 便认为按键的状态确定。reg PB_state; / 按?(0: 松开, 1: 按下)wire PB_idle = (PB_state=PB_sync_1);wire PB_cnt_max =

8、&PB_cnt; /当B_cn为全1时, 输出为真always (posedge Clk_s)if(PB_idle)PB_cnt = 0; / 没发生任何事情else beginPB_cnt = PB_cnt + 1; / 按键被按下或者松开, 增加计数器的值if(PB_cnt_max) PB_state = PB_state; / 如果计数器溢出, 改变PB_state的值 end wire PB_down = PB_state & PB_idle & PB_cnt_max; / 当按键被按下时, 有效一个时钟周期wire PB_up = PB_state & PB_idle & PB_cn

9、t_max; / 当按键被松开时, 有效一个时钟周期endmodulemodule ClkSel( input Clk_s, input Clk_i, input Clk_ii, output Clk_m1, input Clk_sel,Clk_sel1 );reg 3:0 count; reg Clk_o,Clk_o1,Clk_o2;assign Clk_m1=Clk_o1 & (Clk_o2); always(posedge Clk_s)begin case (Clk_sel,Clk_sel1) 2b00: begin Clk_o= Clk_i; end 2b01: begin if (c

10、ount4) Clk_o=Clk_i; end 2b10: begin if (count4) Clk_o=Clk_i; end 2b11: begin Clk_o= Clk_ii; end default:begin if (count4) Clk_o=Clk_i; end endcaseendalways(posedge Clk_s) begin if (Clk_ii) count = 0;elseif(Clk_m1 & (Clk_sel=0 & Clk_sel1=1) |(Clk_sel=1 & Clk_sel1=0) if (count4) count = count +1;else

11、count =4; endalways(posedge Clk_s)beginClk_o1=Clk_o;Clk_o2=Clk_o1;endendmodulemodule Bit1_Display( input Clk_s, input Clk_m1, output reg 3:0 T, input Rstn, input Clk_i ); reg 2:0 cnt_clk;always(posedge Clk_s or negedge Rstn)beginif (!Rstn)begin cnt_clk=1; endelse begin if (Clk_m1=1) begin cnt_clk=cn

12、t_clk+1; if (cnt_clk=4) cnt_clk=1;endendend always (cnt_clk)begin case (cnt_clk)3b001 : begin T = 4b0001;end3b010 : beginT = 4b0010;end3b011 : beginT = 4b0100;end3b100 : beginT = 4b1000;enddefault : beginT = 4b0001;endendcase endendmodule3.用Verilog语言实现74ls244功能模块代码module ls244(G,A,Y);input G;input 3

13、:0 A;output 3:0 Y;assign Y=(G=0)?A:bz;endmodule四实验报告格式1实验目的2实验设备3实验内容A模块代码B引脚映射表C功能仿真测试时序图D加载后运行情况4实验小结实验二 总线传递一 实验目的1. 熟悉并掌握Xilinx ISE 10.1 开发平台; 2. 了解FPGA, 学习Verilog 语言, 掌握如何在FPGA 里面实现数字逻辑开发; 3. 掌握采用总线结构进行信息传递的方法。二 . 实验环境1. 软件环境: Xilinx ISE Design Suit 10.12. 硬件环境: EDK-3SAISE教学平台实验箱三 .原理 下面我们介绍几种在

14、实验中常见三态”TTL”器件。 I74LS244三态输出八缓冲器总线驱动器 它是专作挂总线用的三态逻辑器件之一。 其逻辑图见下: 该器件有8位数据输入。8位原码三态输出, 二个输出控制端1G, 2G, 分别控制两组独立的4位数据传送, 当1G, 2G连接时, 可作8位控制端, 控制端为”0”时为数据传送状态为”1”时输出为高阻状态, 整个器件与总线隔离。用一片74LS244可作为单向数据传送, 若用二片器件则可构成双向数据传送, 事实上, 当前市场上也有现成的双向总统驱动器件出售。如: 74LS245。 II74LS373 74LS374一八D锁存器 它们都是由八个D触发器和八个三态输出缓冲器

15、组成的, 有8个数据输入端1D8D, 8个数据输出端1Q一8Q, 一个使能端K 和一个输出控制端G。其逻辑图见后, 74LS373 和74LS374 的功能是完全一样的, 只是控制信号不同, 74LS373的使能端K是电平控制, 而74LS374是由脉冲的上跳沿控制的。它们与74LS244的不同之处在于: 它们具有数据保存功能, 而74LS244无保存功能。当传送数据时。它相当于一个直通门, 因此74LS373和74LS374 不但可作为直接挂总统器件, 也可作为寄存器、 暂存器、 缓冲器等。 74LS373 逻辑图74LS374 逻辑图2总线建立的原则 ( 1) 互斥性: 指挂在总线上的各总

16、线驱动器( 指发送端) 必须分时操作, 即不允许在同一总线上同时有多个数据源发送信息但允许有几个部件同时接收总线上的信息。 ( 2) 一致性: 指在同一总线上所用的总线控制器件类型( 如OC线或门或三态传输门) 应一致, 同时应考虑总统的负载能力和阻抗匹配, 挂总线器件的有关参数可查手册。三、 框图: 该图表示一个简单系统的总体框图。1. 实验要求: 信息传送部件有4个, 分别用I, O, M, P表示。 信息的宽度为4位。 经过改变时序的控制, 完成以下两种各部件之间信息的传送功能。T1、 IO, M, P T2、 IM T3、 MP T4、 POT1、 IO, P T2、 IM T3、 M

17、P T4、 PO2. 74ls373的Verilog 语言代码: module ls373(cp,clr,D,Q);input cp,clr;input 3:0 D;output 3:0 Q;reg 3:0 Q;always(*)beginif (clr=0) Q=4b0000;else if (cp) Q= D ;endendmodule 四实验报告格式1. 实验目的2. 实验设备3. 实验内容A. 方案框图B. 时序逻辑函数表示式C. 模块代码D. 引脚映射表E. 加载后运行情况4. 实验小结实验三 运算器的设计与调试一 实验目的1.熟悉MSI、 74LS181 ALU的功能和使用方法。2

18、.了解运算部件的基本结构和数据传输过程, 并掌握其设计和调试方法。二 . 实验环境1. 软件环境: Xilinx ISE Design Suit 10.12. 硬件环境: EDK-3SAISE教学平台实验箱三 .原理运算器是计算机的组成部件之一, 不同的计算机具有不同结构的运算器, 且同一结构的运算器也能够因使用器件的不同而使运算器结构在组成细节上出现, 较大的差异, 运算部件主要由ALU、 通用寄存器和一些专用寄存器等构成, 而ALU是其核心。因此, 下面介绍本实验采用的MU芯片的功能和使用。 1芯片介绍 ( 1) 74LS 181算术逻辑单元( 或称函数发生器) MSI( 中规模集成电路)

19、 74LS181 ALU能够对输人的两个4位数据A和B执行32种算术及逻辑运算功能, 其中算术、 逻辑运算各16种, 该器件有A0A3, B0B3 两个4位数据输入端, F0F3为结果输出端, 高位进位输出端CN4, 组成进位辅助函数P和G输出端。S3、 S2、 S1、 S0、 Cn、 M为控制端, 其中M为模式控制, 当M=1时, ALU执行对A, B的逻辑运算; M=0时执行算术运算。ALU的功能表、 引脚图及内部逻辑图详见附录和器件手册。A3GPS0S1S2S3MCnnF0F1F2F374LS181的逻辑图Cn+4A=BA2A1A0B3B2B1B0四、 框图: 该图表示一个简单运算部件系

20、统的总体框图。Cn+4D0D7 F ALU(B) (A)BAC在图中, ALU的数据输入, 输出及对数据的处理都采用并行方式, ALU的B输入端数据来自开关输入寄存器B、 A输入端数据来自累加器AC的输出, ALU的运算结果F存放在AC中, 状态寄存器放两种特征: C和Z具体要求: (1) 数据为4位无符号二进制整数; (2) 完成5种运算功能: I FB II FA B III F=ABIV FA加BV F=A减BAC的初始状态能够经过对它直接清零或者执行F=B操作给予置数; ALU的控制端由开关设置; 显示运算结果 AC和状态 C、 Z; ALU用 1片 74LS181 AC用1片74LS

21、273, B用1片74LS244,状态寄存器用1片74LS74; 五、 74ls273、 74ls181、 74ls74代码 module ls273(clk_s,Clock,Clear,D,Q);input clk_s,Clock,Clear;input 3:0 D;output 3:0 Q;reg 3:0 Q;always(posedge clk_s )beginif (Clear=0) Q=0;else if (Clock)Q=D;endendmodulemodule ls181(clk_s,S_in,A_in,B_in,Cn,M_in,F_out,Cn4,Zero);input clk

22、_s;input 3:0 S_in;input 3:0 A_in;input 3:0 B_in;input Cn;input M_in;output 3:0 F_out;output Cn4,Zero;reg 4:0 F_out_tmp=0;reg Zero=0;wire Cn4;assign F_out=F_out_tmp3:0;assign Cn4=F_out_tmp4;/ACTIVE HIGHT DATAalways(posedge clk_s)begincase(S_in)4b0000 : beginif (M_in=1) F_out_tmp=A_in;else begin if (C

23、n=1) F_out_tmp=A_in;else F_out_tmp=A_in+1; end end4b0001 : beginif (M_in=1) F_out_tmp=(A_in|B_in);else begin if (Cn=1) F_out_tmp=A_in|B_in;else F_out_tmp=(A_in|B_in)+1;end end4b0010 : beginif (M_in=1) F_out_tmp=(A_in)&B_in;else begin if (Cn=1) F_out_tmp=A_in|(B_in);else F_out_tmp=A_in|(B_in)+1;end e

24、nd4b0011 : beginif (M_in=1) F_out_tmp=0;else begin if (Cn=1) F_out_tmp=-1;else F_out_tmp=0;end end4b0100 : beginif (M_in=1) F_out_tmp=(A_in&B_in);else begin if (Cn=1) F_out_tmp=A_in+(A_in&(B_in);else F_out_tmp=A_in+(A_in&(B_in)+1;end end4b0101 : beginif (M_in=1) F_out_tmp=B_in;else begin if (Cn=1) F

25、_out_tmp=(A_in|B_in)+(A_in&(B_in);else F_out_tmp=(A_in|B_in)+(A_in&(B_in)+1;end end4b0110 : beginif (M_in=1) F_out_tmp=A_inB_in;else begin if (Cn=1) F_out_tmp=A_in-B_in-1;else F_out_tmp=A_in-B_in;end end4b0111 : beginif (M_in=1) F_out_tmp=A_in&(B_in);else begin if (Cn=1) F_out_tmp=A_in&(B_in)-1;else

26、 F_out_tmp=A_in&(B_in);end end4b1000 : beginif (M_in=1) F_out_tmp=(A_in)|B_in;else begin if (Cn=1) F_out_tmp=A_in+(A_in&B_in);else F_out_tmp=A_in+(A_in&B_in)+1;end end4b1001 : beginif (M_in=1) F_out_tmp=(A_inB_in);else begin if (Cn=1) F_out_tmp=A_in+B_in;else F_out_tmp=A_in+B_in+1;end end4b1010 : be

27、ginif (M_in=1) F_out_tmp=B_in;else begin if (Cn=1) F_out_tmp=(A_in|(B_in)+(A_in&B_in);else F_out_tmp=(A_in|(B_in)+(A_in&B_in)+1;end end4b1011 : beginif (M_in=1) F_out_tmp=A_in&B_in;else begin if (Cn=1) F_out_tmp=A_in&B_in-1;else F_out_tmp=A_in&B_in;end end4b1100 : beginif (M_in=1) F_out_tmp=1;else b

28、egin if (Cn=1) F_out_tmp=A_in+A_in;else F_out_tmp=A_in+A_in+1;end end4b1101 : beginif (M_in=1) F_out_tmp=A_in|(B_in);else begin if (Cn=1) F_out_tmp=(A_in|B_in)+A_in;else F_out_tmp=(A_in|B_in)+A_in+1;end end4b1110 : beginif (M_in=1) F_out_tmp=A_in|B_in;else begin if (Cn=1) F_out_tmp=(A_in|(B_in)+A_in

29、;else F_out_tmp=(A_in|(B_in)+A_in+1;end end4b1111 : beginif (M_in=1) F_out_tmp=A_in;else begin if (Cn=1) F_out_tmp=A_in-1;else F_out_tmp=A_in;end enddefault : F_out_tmp=5b00000;endcaseend always(F_out_tmp)beginif (F_out_tmp3:0=4b0000)Zero=1b1;elseZero=1b0;endendmodulemodule ls74(clk_s,clock,clear,di

30、n,dout );input clk_s;input clock;input clear;input din;output dout;reg dout;always(posedge clk_s )begin if (clear=1)beginif (clock=1) dout=din;endelse dout=1b0;endendmodule六、 验报告要求1. 实验目的2. 实验设备3. 实验内容A. 方案框图B. 时序逻辑函数表示式C. 模块代码D. 引脚映射表E. 加载后运行情况4. 实验小结实验四 存贮器的设计与调试一 实验目的1掌握静态RAM的存取方法和器件的检测方法。2学会如何利用

31、现成的RAM器件来构成系统中所需的存贮空间。二 . 实验环境1.软件环境: Xilinx ISE Design Suit 10.12. 硬件环境: EDK-3SAISE教学平台实验箱三 .原理1 器件介绍(1) RAM器件MN2114是一种4位1K字节的NMOS静态随机存贮器, 其逻辑电平与TTL兼容。41664存储矩阵由该器件的内部逻辑结构图知道, 它是由存贮体、 地址译码器。读写寄存器、 读写控制器、 三态输入输出缓冲器等部分组成的, 各组成部分的功能是: 存贮体寄存信息代码。 译码器分行译码和列译码, 选择要访问的存贮单元。 读写寄存器把代码从存贮体读出并放大或将代码写入存贮体。 读写控

32、制器接收读写命令, 并发出相应的信息来控制相应的读写作。 三态输入输出缓冲器接收或发送数据。 器件的读写功能是由选片端CS和读写端WE控制实现的, 见下面功能表: Cs非 WE非 I/O状态 操作功能 H 高阻 片子未选中 L L H 写”1” L L L 写”0” L H H 读”1” L H L 读”0”( 2) MN2ll4的读写操作、 读操作(a) 时序波形上图是存储器对控制信号的时序要求, 在A点处, CUP送出存储器单元地址。经tA时间之后, 读出的数据真正在数据总线上稳定, 因此, 就要求在地址信号有效后不超过tAtCO的时间段中, 片选信CS有效。C点之后, 输出数据成为有效,

33、 而且只要地址信号和输出允许信号没有撤消, 那输出数据一直保持有效。在此图中, 未对读写控制信号RW作说明, 可是, 在整个读周期中, RW应该保持高电平。、 写操作( a) 时序波形上图表示了存储器对写周期的时序要求。在写周期开始时, 先要求有一段地址建立时间, 在B点处, 地址已经有效, 为了提高速度, 此时, 要求另外两个写操作必须具备的信号即片选信号和写信号均应处于低电平。对于写入数据来讲, 只要在片选信号和读写信号为低电平时, 数据能够保持稳定就行了, 为了简单起见, 有些存储器要求在整个写周期中, 数据保持稳定。在写周期中, 要求最严格的时间参数有两个, 一个就是前面提到的地址建立

34、时间tAW。另一个是写脉冲的宽度tW。地址建立时间是指地址出现到稳定所需的时间, 写操作时, 它要在写脉冲到来之前稳定。A点到B点的时间段就是地址建立时间。写脉冲宽度就是读写控制线维持低电平的时间, 它不能小于规定的值。 写周期就是A点到D点之间的时间, 它为地址建立时间、 写脉冲宽度和写操作恢复时间三者的总和。写操作恢复时间和读操作恢复时间的含义类似, 也是为了进行器件内部操作而设置的。对于某些存储器件, 读操作恢复时间和写操作恢复时间很小, 于是认为是”0”。 ( A) 操作步骤 a将地址输入到地址输入端A09 b置控制端WE为低电平”0”。 c把要写入的数据线I/O1I/O4上。d置控制

35、端CS为低电平”0”, 经一定的延时(tDS+tDH)后, 就完成把数据写入内存的操作。步骤a、 b、 c、 d为单写时的操作步骤, 若要连写, 则应在改变地址输入之前抬高CS( 或CS和WE任一为高) , 再重复步骤ad步骤, 抬高CS的目的是避免在改变地址输入时会发生误写, 冲掉原来写好的信息, 这一点应特别注意。器件的检测存贮器是计算机的重要组成部件, 它的可靠性和稳定性对机器的可靠运行有较大的影响。因此, 在机器运行之前必须对存贮器进行检测, 以便及早地发现器件的稳定性故障及了解对各种控制信号的参数要求, 下面介绍一种对RAM MN2114器件进行自动检测的方法。检测步骤: () 设置

36、测试码, 全”、 全”, 及”和”间隔码或者其它码均可。() 自动连续加载测试码于RAM中。() 自动读出一个被加载单元的内容。将读出的信息与原设置的测试码进行比较, 若两者相等, 则执行下一个单元的测试, 直至检测完毕, 若两者不相等, 则停止运行, 记下出错的地址和相应单元的错误信息。流程图: NY启动设置测试码自动连续加载代码于RAM中读出一个单元内容正确YN比较结束地址加1显示出错地址内容容停机三、 实验内容1画出设计框图 2要求() 字长: 4位() 采用总线结构 建立总线的原则 互斥性挂在总线上的各发送部件必须具有分时操作的可能性, 即不允许在同一时刻有多个部件向同总线发送几种信息

37、, 但几个部件可同时接收总线上的信息。 一致性指挂在同一总线上的部件所采用的器件类型应一致, 本实验的均采用三态器件, 例如。MN2ll4, 74LS374, 74LS373, 74LS244等。( ) 实现下列功能 a写某单元的内容。 b读某单元的内容。 c连续写几个单元的内容。 d连续读几个单元的内容。 四、 2114、 74ls161代码module ram2114( inout 3:0 data, input 3:0 addr, input cs, input rw, input en, input clk );reg 3:0 arm 15:0;reg 3:0 temp;assign data=(cs=0 & rw=1 & en=0

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 应用文书 > 技术指导

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服