通过模块实例调用实现大型系统的设计_第1页
通过模块实例调用实现大型系统的设计_第2页
通过模块实例调用实现大型系统的设计_第3页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、Verilog HDL数字系统设计报告10姓名学号时间地点实验题目 通过模块实例调用实现大型系统的设计一、实验目的:i. 学习和掌握状态机的嵌入和模块实例的连接方法;2 . 了解大型系统设计的层次化,结构化解决办法的技术基础;3 学习数据总线在模块设计中的应用和控制,掌握复杂接口模块设计的基础技术;4 学习和编写用工程概念来编写较完整的测试模块,做到接近真实的完整测试。二、实验环境:CPU型号:英特尔 Pentium Dual-Core T4200 2.00GHz内存容量:4G ( 三星DDR3 1067 MHz) 操作系统类型:Windows XP SP3仿真软件:ModelSim SE 6

2、.2b三、实验内容:使用状态机的嵌套和模块化的方法编写并行与串行数据转换器,在 Modelsim中对产生的波 形进行分析并验证运行过程, 通过学习数据总线在模块设计中的应用和控制, 掌握复杂接口 模块设计的基础技术。四、系统框图:框图:P 就恥'沁i皿忡 d b山 riLsh_ji3g.data*1P_S状态图(并转串)允许输出并行数据写入data_buf7S_P (串转并)五、实验波形图:写入data_buf0写入data_buf6写入data_buf1写入data_buf5p_out_link允许输出并行输出输出data_buf0输出data_buf6输出data_buf1输出da

3、ta_buf5输出data_buf2输出data_buf3输出data_buf4F辽価曽二蚩 纟曹鸯13金畚祝習莎岂m冷:甲| ®豊圜删B簷王:f斤创調!:打 opAzk. .Tcp/d=la_bjl ddCi'hlbEt AU_daicJT cp/dla ngtjjg 打 g/D_P 江cry1、nGet_AD_data由高电平变为低电平,发出控制信号,P_S的数据寄存器清零,状态寄存器置数。2、D_Pin_ena从低电平变成高电平使并行数据从data_buf 中输入数据进入P_S的寄存器中,之后该 信号从高电 平变成低电平,等待下次写入控制。3、D_Bin_ena从低电平

4、变成高电平,控制数据从P_S的D_Bin_out接口向S_P的寄存器中写 入,数据写完后变为低电平。六、体会:这次的电路系统部件与第九次实验的转换器电路相似,只是串转并、并转串转换器通过电路进行了组合互联,其功能仍很简单。数据在n Get_AD_data、D_Pin_e na的控制下进行并转串的转换和输出,再在D_Bin_ena等信号的控制下进入串转并的转换器中最终输出。而这个设计中不同于单个转换器,加入许多的控制信号如 nGet_AD_data、D_Bin_ena、D_Pin_ena,是一个多端控制的电路,符合现代电路的设计思想。在仿真过程中主要的问题是下载的代码 由于格式问题存在部分错误,

5、经过了仔细的核对才运行成功。七、附录:(代码。)/ 文件名P_S.v /*模块功能:把在nGet_AD_data负跳变沿时刻后能维持约三个 时钟周期的并行字节数据取入模块,在时钟节拍下转换为字 节的位流,并产生相应字节位流的有效信号*/'defi ne YES 1'define NO 0module P_S(Dbit_out,li nk_S_out,data, nGet_AD_data,clk);in put clk;in put n Get_AD_data; in put7:0 data;output Dbit_out; output lin k_S_out;/主时钟节拍/负

6、电平有效的取并行数据控制信号线 并行输入的数据端口。/串行位流的输岀/允许串行位流输岀的控制信号reg 3:0 state;reg 7:0 data_buf;reg lin k_S_out;reg d_buf;reg fini sh_flag;状态变量寄存器并行数据缓存器串行位流输岀的控制信号寄存器/位缓存器/字节处理结束标志assig n Dbit_out = (li nk_S_out)? d_buf:0;给岀串行数据。always (posedge clk or n egedge n Get_AD_data)/ nGet_AD_data下降沿置数,寄存器清零,clk上跳沿送出位流if(!

7、nGet_AD_data)beginfini sh_flag <=0;state <= 9;lin k_S_out <='NO;d_buf <= 0;data_buf <=0;endelsecase(state)9:begindata_buf <= data;state <=10;lin k_S_out <='NO;end10:begindata_buf <= data;state <=0;lin k_S_out <='NO;end0:beginlin k_S_out <='YES;d_bu

8、f <=data_buf7;state <=1;end1:begi nd_buf <=data_buf6;2:endbeginstate <=2;3:endbegind_buf <=data_buf5;state <=3;4:end begind_buf <=data_buf4; state <=4;5:endbegind_buf <=data_buf3; state <=5;6:endbegind_buf <=data_buf2; state <=6;7:endbegind_buf <=data_buf1; sta

9、te <=7;8:endbegind_buf <=data_buf0; state <=8;default:endbeginlin k_S_out <='NO;state <= 4'b1111;/do no thi ng statefini sh_flag <=1;end endcaselin k_S_out <='NO;state <= 4'b1111;/do no thi ng stateen dmodule/ 文件名S_P.v*8*模块功能:把在位流有效信号控制下的字节位流读入模块,在时钟节拍控制下转换为并行

10、的字节数据,输出到并行 数据口。timescale 1ns/1ns'defi ne YES 1'define NO 0module S_P(data, Dbit_i n, Dbit_e na, elk);output 7:0 data; in putDbit_i n, elk;in putDbit_e na;并行数据输岀口/字节位流输入口/字节位流使能输入口reg 7:0 data_buf;reg 3:0 state;/状态变量寄存器reg p_out_li nk;/并行输出控制寄存器assign data = (p_out_li nk='YES) ? data_buf

11、 : 8'b z;always (n egedge elk) if(Dbit_e na ) ease(state)0:1:2:3:beginp_out_li nk<='NO;data_buf7 <= Dbit_i n;state <=1;endbegindata_buf6 <= Dbit_ in; state <=2;endbegindata_buf5 <= Dbit_i n; state <=3;endbegindata_buf4 <= Dbit_ in; state <=4;end4:5:6:begindata_buf3

12、 <= Dbit_i n; state <=5;endbegindata_buf2 <= Dbit_ in; state <=6;endbegindata_buf1 <= Dbit_i n; state <=7;end7:begi ndata_bufO <= Dbit_i n;state <=8; end8:beginp_out_li nk <= 'YES; state <= 4'b1111;enddefault:state <=0;endcaseelse begi np_out_l ink <= '

13、;YES; state <=0;enden dmodule/*/ 文件名 sys.v *模块的功能:把两个独立的逻辑模块(P_S和S_P)合并到一个可综合的模块中,共用一条并行总线,配合有关信号,分时进行输入/或输出。模块的目的:学习如何把两个单向输入/输出的实例模块,连接在一起,共享一条总线。本模块是完全可综合模块,已经通过综合和布线后仿真。*/ 'in elude "./P_S.v"'inelude "./S P.v"/取并行数据的控制信号/并行总线用于输入数据的控制信号/主时钟/双向并行数据总线/字节位流输岀字节位流输岀使能m

14、odule sys(databus,use_p_i n_bus,Dbit_out,Dbit_e na,n Get_AD_data,clk); in put nGet_AD_data;in put use_p_i n_bus;in put clk;inout 7:0 databus;output Dbit_out;output Dbit_e na;wire clk ;wire n Get_AD_data;wire Dbit_out;wire Dbit_e na;wire 7:0 data;assig n databus = (!use_p_i n_bus)? data : 8'bzzzz

15、_zzzz;P_S m0(.Dbit_out(Dbit_out),.li nk_S_out(Dbit_e na),.data(databus),.n Get_AD_data( nGet_AD_data),.clk(clk);S_P m1(.data(data), .Dbit_i n(Dbit_out), .Dbit_e na(Dbit_e na),.clk(clk);en dmodule/文件名:Top.v /* 模块的功能:对合并在一起的可综合的模块sys进行测试验证。其测试信号*尽可能地与实际情况一致,用随机数系统任务对数据的到来和时钟沿的*抖动都进行了模拟仿真。本模块无任何工程价值,只有

16、学习价值。*/'timescale 1ns/1ns'include "./sys.v"/改用不同级别的Verilog网表文件可进行不同层次的仿真module Top;reg clk;reg7:0 data_buf;reg n Get_AD_data;reg D_Pin_ena;并行数据输入sys模块的使能信号寄存器wire 7:0 data;wire clk2;wire Dbit_e na;assig n data = (D_Pin_en a)? data_buf : 8'bz;in itialbeginclk = 0;n Get_AD_data =

17、1;/置取数据控制信号初始值为高电平data_buf = 8'b1001_1001;/假设的数据缓存器的初始值,可用于模拟并行数据的变化D_Pin_e na = 0;end in itialbegin repeat(100) begin#(100*14+$ra ndom %23) n Get_AD_data = 0;取并行数据开始# (112+$ra ndom %12)n Get_AD_data = 1; 保持一定时间低电平后恢复高电平# ($random%50) D_Pin_ena = 1;并行数据输入sys模块的使能信号有效# (100*3 + $ra ndom%5) D_Pin_e na = 0;/保持三个时钟周期后

温馨提示

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

评论

0/150

提交评论