网盘非配套参考程序fifo的代码verilog_第1页
网盘非配套参考程序fifo的代码verilog_第2页
网盘非配套参考程序fifo的代码verilog_第3页
网盘非配套参考程序fifo的代码verilog_第4页
网盘非配套参考程序fifo的代码verilog_第5页
已阅读5页,还剩11页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验四

复杂逻辑电路设计实验室:九教南212实验内容

(1)FIFO存储器的设计(2)熟悉modelsim设计环境

FIFO是英文FirstInFirstOut的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。FIFO的一些重要参数

FIFO的宽度:也就是英文资料里常看到的THEWIDTH,它指的是FIFO一次读写操作的数据位,就像MCU有8位和16位,ARM32位等等。

FIFO的深度:THEDEEPTH,它指的是FIFO可以存储多少个N位的数据(如果宽度为N)。如一个8位的FIFO,若深度为8,它可以存储8个8位的数据,深度为12,就可以存储12个8位的数据。满标志:FIFO已满或将要满时由FIFO的状态电路送出的一个信号,以阻止FIFO的写操作继续向FIFO中写数据而造成溢出(overflow)。空标志:FIFO已空或将要空时由FIFO的状态电路送出的一个信号,以阻止FIFO的读操作继续从FIFO中读出数据而造成无效数据的读出(underflow)。读指针:指向下一个读出地址。读完后自动加1。写指针:指向下一个要写入的地址的,写完自动加1。

对于FIFO,读写指针都指向一个内存的初始位置,每进行一次读写操作,相应的指针就递增一次,指向下一个内存位置。当指针移动到了内存的最后一个位置时,它又重新跳回初始位置。在FIFO非满或非空的情况下,这个过程将随着读写控制信号的变化一直进行下去。如果FIFO处于空的状态,下一个读动作将会导致向下溢(underflow),一个无效的数据被读人;同样,对于一个满了的FIFO,进行写动作将会导致向上溢出(overflow),一个有用的数据被新写入的数据覆盖。这两种情况都属于误动作,因此需要设置满和空两个信号,对满信号置位表示FIFO处于满状态,对满信号复位表示FIFO非满,还有空间可以写入数据;对空信号置位表示FIFO处于空状态,对空信号复位表示FIFO非空,还有有效的数据可以读出。FIFO存储器的设计modulefifo(clk,rstp,din,writep,readp,dout,emptyp,fullp);input clk;input rstp;//复位信号input[15:0] din;input readp;//读信号input writep;//写信号output[15:0] dout;output emptyp;//空标志output fullp;//满标志parameter DEPTH=2, MAX_COUNT=2‘b11; //定义地址最大值reg emptyp;reg fullp;reg[15:0] dout;reg[(DEPTH-1):0] tail;//定义读指针reg[(DEPTH-1):0] head;//定义写指针//定义计数器reg[(DEPTH-1):0] count;reg[15:0]fifomem[0:MAX_COUNT];//定义fifomem存储器有4个16位的存储器//dout被赋给tail指向的值always@(posedgeclk)beginif(rstp==1)begindout<=16‘h0000;//复位信号有效置0endelsebegindout<=fifomem[tail];//将fifomem中第tail个单元赋给doutendendalways@(posedgeclk)beginif(rstp==1'b0&&writep==1'b1&&fullp==1'b0)beginfifomem[head]<=din;//写入

endendalways@(posedgeclk)beginif(rstp==1'b1)beginhead<=2‘b00;//复位

endelsebeginif(writep==1'b1&&fullp==1'b0)beginhead<=head+1;endendendalways@(posedgeclk)beginif(rstp==1'b1)begintail<=2‘b00;//复位

endelsebeginif(readp==1'b1&&emptyp==1'b0)begintail<=tail+1;endendendalways@(posedgeclk)beginif(rstp==1'b1)begincount<=2'b00;endelsebegincase({readp,writep})2'b00:count<=count;2'b01:if(count!=MAX_COUNT)count<=count+1;//为写状态时计数器进行加法计数

2'b10:if(count!=2'b00)count<=count-1;//为读状态计数器进行减法计数

2'b11:count<=count;endcaseendendalways@(count)beginif(count==2'b00)emptyp<=1‘b1;//count为0时emptyp赋为1elseemptyp<=1'b0;endalways@(count)beginif(count==MAX_COUNT)fullp<=1‘b1;//计数到最大时fullp赋为1elsefullp<=1'b0;endendmodule测试程序:moduletest_fifo;reg clk;reg rstp;reg[15:0] din;reg readp;reg writep;wire[15:0] dout;wire emptyp;wire fullp;reg[15:0] value;fifoU1(.clk(clk),.rstp(rstp),.din(din),.readp(readp),.writep(writep),.dout(dout),.emptyp(emptyp),.fullp(fullp));taskread_word;begin@(negedgeclk);readp=1;@(posedgeclk)#5;readp=0;endendtask

taskwrite_word;input[15:0] value;begin@(negedgeclk);din=value;writep=1;@(posedgeclk);#5;din=16'hzzzz;writep=0;endendtaskinitialbeginclk=0;foreverbegin#10clk=1;#10clk=0;endendinitialbegin//test1;test2;//调用测试模块2

endtasktest1;begindin=16'hzzzz;writep=0;readp=0;rstp=1;#50rstp=0;#50;write_word(16'h1111);write_word(16'h2222);write_word(16‘h3333);//写入3个数据

read_word;read_word;//读两个

write_word(16‘h4444);//在写一个数据

repeat(6)beginread_word;end

write_word(16'h0001);write_word(16'h0002);write_word(16'h0003);write_word(16'h0004);write_word(16'h0005);write_word(16'h0006);write_word(16'h0007);write_word(16'h0008);repeat(6)beginread_word;endendendtasktasktest2;reg[15:0]writer_counter;beginwriter_counter=16'h0001;din=16'hzzzz;writep=0;readp=0;rstp=1;#50rstp=0;#50;fork//写数据

beginrepeat(500)begin@(negedgeclk);if(fullp==1'b0)beginwrite_word(writer_counter);#5;writer_counter=writer_counter+1;end#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论