通过模块之间的调用实现自顶向下的设计.doc

通过模块之间的调用实现自顶向下的设计.doc

ID:28149417

大小:28.50 KB

页数:7页

时间:2018-12-08

通过模块之间的调用实现自顶向下的设计.doc_第1页
通过模块之间的调用实现自顶向下的设计.doc_第2页
通过模块之间的调用实现自顶向下的设计.doc_第3页
通过模块之间的调用实现自顶向下的设计.doc_第4页
通过模块之间的调用实现自顶向下的设计.doc_第5页
资源描述:

《通过模块之间的调用实现自顶向下的设计.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、通过模块之间的调用实现自顶向下的设计  练习十.通过模块之间的调用实现自顶向下的设计目的:学习状态机的嵌套使用实现层次化、结构化设计。现代硬件系统的设计过程与软件系统的开发相似,设计一个大规模的集成电路的往往由模块多层次的引用和组合构成。层次化、结构化的设计过程,能使复杂的系统容易控制和调试。在VerilogHDL中,上层模块引用下层模块与C语言中程序调用有些类似,被引用的子模块在综合时作为其父模块的一部分被综合,形成相应的电路结构。在进行模块实例引用时,必须注意的是模块之间对应的端口,即子模块的端口与父模块的内部信号必须明确

2、无误地一一对应,否则容易产生意想不到的后果。下面给出的例子是设计中遇到的一个实例,其功能是将并行数据转化为串行数据送交外部电路编码,并将解码后得到的串行数据转化为并行数据交由CPU处理。显而易见,这实际上是两个独立的逻辑功能,分别设计为独立的模块,然后再合并为一个模块显得目的明确、层次清晰。//----------------p_to_s.v---------------------------------modulep_to_s(D_in,T0,data,SEND,ESC,ADD_100);outputD_in,T0;//D

3、_in是串行输出,T0是移位时钟并给//CPU中断,以确定何时给出下个数据。input[7:0]data;//并行输入的数据。inputSEND,ESC,ADD_100;//SEND、ESC共同决定是否进行并到串//的数据转化。ADD_100决定何时置数。wireD_in,T0;reg[7:0]DATA_Q,DATA_Q_buf;  assignT0=!(SEND&ESC);//形成移位时钟。.assignD_in=DATA_Q[7];//给出串行数据。  always@(posedgeT0ornegedgeADD_100)/

4、/ADD_100下沿置数,T0上沿移位。beginif(!ADD_100)DATA_Q=data;elsebeginDATA_Q_buf=DATA_Q<<1;//DATA_Q_buf作为中介,以令综合器DATA_Q=DATA_Q_buf;//能辨明。endendendmodule在p_to_s.v中,由于移位运算虽然可综合,但是不是简单的RTL级描述,直接用DATA_Q<=DATA_Q<<1的写法在综合时会令综合器产生误解。另外,在该设计中,由于时钟T0的频率较低,所以没有象以往那样采用低电平置数,而是采用ADD_100的下降

5、沿置数。//---------------------s_to_p.v---------------------------modules_to_p(T1,data,D_out,DSC,TAKE,ADD_101);outputT1;//给CPU中断,以确定CPU何时取转化//得到的并行数据。output[7:0]data;inputD_out,DSC,TAKE,ADD_101;//D_out提供输入串行数据。DSC、TAKE//共同决定何时取数。wire[7:0]data;wireT1,clk2;reg[7:0]data_la

6、tch,data_latch_buf;  assignclk2=DSC&TAKE;//提供移位时钟。assignT1=!clk2;  assigndata=(!ADD_101)?data_latch:8’bz;always@(posedgeclk2)begindata_latch_buf=data_latch<<1;//data_latch_buf作缓冲data_latch=data_latch_buf;//,以令综合器能辩明。data_latch[0]=D_out;endendmodule将上面的两个模块合并起来的sys.v

7、的源代码://-------------------sys.v---------------------------`include“./p_to_s.v”`include“./s_to_p.v”modulesys(D_in,T0,T1,data,D_out,SEND,ESC,DSC,TAKE,ADD_100,ADD_101);inputD_out,SEND,ESC,DSC,TAKE,ADD_100,ADD_101;inout[7:0]data;outputD_in,T0,T1;  p_to_sp_to_s(.D_in(D_i

8、n),.T0(T0),.data(data),.SEND(SEND),.ESC(ESC),.ADD_100(ADD_100));s_to_ps_to_p(.T1(T1),.data(data),.D_out(D_out),.DSC(DSC),.TAKE(TAKE),.ADD_

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。