一个16bit字中两个相邻1之间最大间隙的电路verilog.doc_第1页
一个16bit字中两个相邻1之间最大间隙的电路verilog.doc_第2页
一个16bit字中两个相邻1之间最大间隙的电路verilog.doc_第3页
一个16bit字中两个相邻1之间最大间隙的电路verilog.doc_第4页
全文预览已结束

下载本文档

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

文档简介

设计一个能求出一个16bit字中两个相邻1之间最大间隙的电路。完成HDL设计及testbench描述,给出综合后的时序仿真结果。提交纸质文档。系统化分为状态机控制器和数据通路,信号的接口关系如图(a)所示:数据通路包括一个位计数器(k)、一个存储寄存器(tmp)、一个间隙寄存器(Gap)。控制器产生的控制信号包括: flush_tmp:清空tmp寄存器 incr_tmp: 增加tmp寄存器 store_tmp:用tmp加载Gap incr_k: 增加k计数器Verilog 代码:module gap(data,clk,rst,gap);input clk,rst;input 15:0 data;output 3:0 gap;reg 3:0 gap,tmp,k;reg flush_tmp,store_tmp,incr_k,incr_tmp;parameter s_idle=0,s_1=1,s_2=2,s_done=3;reg1:0 state,next_state;wire Bit=datak;always (posedge clk,posedge rst)if(rst)state=s_idle;else stategap)begin store_tmp=1;next_state=s_done;endelse next_state=s_done;else next_state=s_done;else begin if(Bit)if(tmpgap)begin store_tmp=1;next_state=s_1;incr_k=1;flush_tmp=1;end else begin flush_tmp=1;incr_k=1;end else begin incr_tmp=1;incr_k=1;next_state=s_2;endend s_done : begin next_state=s_idle;incr_k=1;end default :next_state=s_idle;endcaseendalways (posedge clk,posedge rst)beginif(rst)begink=0;tmp=0;gap=0;endelse beginif(flush_tmp) tmp=0;if(store_tmp) gap=tmp;if(incr_k)k=k+1;if(incr_tmp) tmp=tmp+1;end endendmoduletest-bench:timescale 1 ns/ 1 psmodule gap_vlg_tst();reg clk;reg 15:0 data;reg rst; wire 3:0 gap; gap i1 ( .clk(clk),.data(data),.gap(gap),.rst(rst);initial begin rst=1;clk=0;#10 rst=0;data=16b1000_0000_0010_0001; #640 rst=1; data=16b1000_0000_0000_0001;#10 rst=0;#640 rst=1; data=16b1000_1110_0010_0001;#10 rst=

温馨提示

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

评论

0/150

提交评论