课程设计报告
《计算机组成与系统结构》
题
目: 8*4 位先进先出(FIFO)存储器设计
学生姓名:
专
班
学
业:
级:
号:
指导教师:
2014.1.4
目
录
1.课程设计目的………………………………………………………01
2.课程设计设备………………………………………………………01
3.课程设计原理………………………………………………………01
(1)顶层原理图………………………………………………………01
(2)各信号的功能为…………………………………………………01
(3)内部逻辑图………………………………………………………02
4.设计操作步骤………………………………………………………03
5.设计主要代码………………………………………………………04
6.设计结果 ……………………………………………………………09
7.心得体会 ……………………………………………………………09
8.参考文献 ……………………………………………………………10
8*4 位先进先出(FIFO)存储器设计
FIFO 简介:
FIFO 是英文 First In First Out 的缩写,是一种先进先出的
数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使
用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,
其数据地址由内部读写指针自动加 1 完成,不能像普通存储器那样可
以由地址线决定读取或写入某个指定的地址。
一.课程设计目的
了解及掌握先进先出(FIFO)存储器的工作特性及其读写方法。
二.课程设计设备
1.TDN-CM+或 TDN-CM++教学实验系统一台。
2.PC 微机一台。
三.课程设计原理
1.顶层原理图:
此为 8*4 的 FIFO,在顶层原理图,有三个模块:控制信号模块、
寄存器模块、数据选择器模块都用 ABEL 语言设计。
2.各信号的功能为:
EMPTY :FIFO 存储器为空标志,高电平有效。
1
FULL :FIFO 存储器满标志,高电平有效。
RST :清 FIFO 存储器为空。
FIFOWR :FIFO 存储器写入信号,低电平有效。
FIFORD :FIFO 存储器读信号,低电平有效。
ID0~ID7 :FIFO 存储器输入数据线。
OD0~OD7 :FIFO 存储器读出数据线。
各信号后的括号内的数字为本设计在 CPLD 中定义的相应的管脚号。
3.内部逻辑图:
2
四.设计操作步骤
1.编写 cpld 芯片设计程序,按照上述功能要求及管脚说明,进行
芯片设计。
2.编译所设计的程序
3.实验连线图接线。
4.具体操作步骤
接线图中 OO1、OO2、OOE1、OOE2、OOEE1、OOEE2 是六个观察记
数的指示灯,其中 OO1、OO2 是写信号记数,OOE1、OOE2 是读信号
记数,OOEE1、OOEE2 是 FIFO 中的 数据个数。FULL 及 EMPTYy 是
满和空标志灯。
实验时,将 SWITCH UNIT 单元中的 SW-B 开关置为 “0”,然后拨
动系 统右下 脚的 CLR 清零 开关使 读、写 信号记 数清 零。给 INPUT
3
DEVICE 单元中置一个数,按动 START,此时将该数写入到 FIFO 中,依
次写四次后,FULL 满标志置位。此时再也写不进去;然后连续按动 KK2-
读信号,将顺序读出所存的四个数,数据总线显示灯及 OUTPUT
UNIT
单元中的数码管显示所读出的数据。四个数全部读出后,EMPTYy 空标志
置位。检查执行结果是否与理论值一致。
设计接线图如下:
五.设计主要代码
4
MODULE
FIFO
"INPUT
RST,FIFORD,FIFOWR PIN ;
"OUTPUT
OEE1,OEE2, FULL,EMPTY PIN
ISTYPE 'COM';
OE1,OE2,O2,O1
PIN
ISTYPE 'REG';
"NODE
W , FLAGG
PIN
ISTYPE 'REG';
C1,C2,C3,C4
PIN
ISTYPE 'COM';
OE=[OE2,OE1];
O=[O2,O1];
OEE=[OEE2,OEE1];
EQUATIONS
OE.CLK=FIFORD; O.CLK=FIFOWR; OE.AR=!RST;
O.AR=!RST;
W.CLK=FIFORD;
W.AR=!RST#(!FIFOWR);
W:=1;
FLAGG.CLK=FIFOWR;
FLAGG.AR=W&(!FIFORD)#(!RST)#(OEE==1)&(!FIFORD);
FLAGG:=1;
WHEN OE==3 THEN OE:=0
ELSE OE:=OE+1;
WHEN O==3
THEN O:=0
ELSE O:=O+1;
OEE=O-OE;
C1=!FIFOWR&!O2&!O1;
C2=!FIFOWR&!O2&O1;
C3=!FIFOWR&O2&!O1;
C4=!FIFOWR&O2&O1;
EMPTY=(OE==O)&!FLAGG;
FULL=(OE==O)&FLAGG;
5
END
MODULE
MUX4
"INPUT
OE1,OE2,CLK
PIN ;
D07,D06,D05,D04,D03,D02,D01,D00
D17,D16,D15,D14,D13,D12,D11,D10
D27,D26,D25,D24,D23,D22,D21,D20
D37,D36,D35,D34,D33,D32,D31,D30
PIN ;
PIN ;
PIN ;
PIN ;
"OUTPUT
O7,O6,O5,O4,O3,O2,O1,O0
PIN
ISTYPE 'REG';
I0=[D07,D06,D05,D04,D03,D02,D01,D00];
I1=[D17,D16,D15,D14,D13,D12,D11,D10];
I2=[D27,D26,D25,D24,D23,D22,D21,D20];
I3=[D37,D36,D35,D34,D33,D32,D31,D30];
OD=[O7,O6,O5,O4,O3,O2,O1,O0];
OE=[OE2,OE1];
EQUATIONS
OD.CLK=!CLK;
WHEN
OE==0
THEN
OD:=I0;
ELSE WHEN
OE==1
THEN
OD:=I1;
ELSE WHEN
OE==2
THEN
OD:=I2;
ELSE WHEN
OE==3
THEN
OD:=I3;
6