华中科技大学Verilog语言实验报告资料

上传人:w****i 文档编号:91490962 上传时间:2019-06-28 格式:DOC 页数:31 大小:1.11MB
返回 下载 相关 举报
华中科技大学Verilog语言实验报告资料_第1页
第1页 / 共31页
华中科技大学Verilog语言实验报告资料_第2页
第2页 / 共31页
华中科技大学Verilog语言实验报告资料_第3页
第3页 / 共31页
华中科技大学Verilog语言实验报告资料_第4页
第4页 / 共31页
华中科技大学Verilog语言实验报告资料_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《华中科技大学Verilog语言实验报告资料》由会员分享,可在线阅读,更多相关《华中科技大学Verilog语言实验报告资料(31页珍藏版)》请在金锄头文库上搜索。

1、2016Verilog 语言 实验报告专 业:计算机科学与技术班 级:CS1409学 号:U201414813姓 名:唐礼威电 话:15827505005邮 件:完成日期:2016.6.13华 中 科 技 大 学 课 程 实 验 报 告目 录1数据通路实验11.1实验目的11.2实验内容及要求11.3实验方案21.4实验步骤21.5故障及分析21.6仿真与结果31.7心得与体会42FSM实验52.1实验目的52.2实验内容及要求52.3实验方案62.4实验步骤62.5故障及分析72.6仿真与结果72.7心得与体会83意见和建议94附录1011 数据通路实验1.1 实验目的综合应用掌握的简单组合

2、电路和时序电路的设计方法,完成一个简单的数据通路的设计。1.2 实验内容及要求1. 根据下图给出的数据通路(图中R0、R1和ACC是寄存器,+是加法器,其它则是多路选择器),完成相应的Verilog程序设计,图中数据线的宽度为8位,要求可以扩充至16位或者是32位;2. 根据下图给出的数据通路(图中SUM和NEXT是寄存器,Memory是存储器,+是加法器,=0是比较器,其它则是多路选择器),完成相应的Verilog程序设计,图中数据线的宽度为8位,要求可以扩充至16位或者是32位。实验要求:程序必须自己编写,满足数据通路设计要求,综合结果正确。1.3 实验方案根据要求,先把选择器、加法器、寄

3、存器、比较器和存储器分模块编写,在主模块中根据数据通路调用即可。题目中要求数据线宽度为8位,并且可以扩充至16位或32位,所以在前面定义WIDTH,利用parameter的参数传递功能来实现。1.4 实验步骤1.分模块编写代码(见附录)2.运行综合Run Synthesis3.综合成功后检查RTL Analysis中的电路图Schematic1.5 故障及分析刚开始跑出来很多线是断的,后来发现是引脚对应部分的代码没有写完整。后来加法器和ACC的参数顺序写错,导致接线与题给的不一致,发现问题后及时改正了。1.6 仿真与结果Schematic图形如下:第一个数据通路:第二个数据通路:由以上两图可得

4、,成功完成了要求的数据通路的设计,满足了各基本器件的输入输出链接要求;改变数据线宽度后再检查电路图,发现数据线做出相应改变,完成该实验。1.7 心得与体会对数据通路的设计有了更好的理解,明白了数据通路的基本器件构成,熟悉了这些器件的功能和端口,掌握了Verilog完成基本运算器件的设计,完成了数据通路的设计。 2 FSM实验2.1 实验目的掌握用Verilog语言进行FSM设计、实现和仿真的方法。2.2 实验内容及要求5.1_1、用FSM实现一个mealy型序列检测器,对一位的串行输入序列中的“1”的数量进行检测。如果“1”的总数可以被3整除,输出“1”,否则输出“0”。5.1_2、用FSM实

5、现一个moore型序列检测器,对两位的串行输入序列进行检测。输入01,00时,输出0,输入11,00时,输出1,输入10,00时,输出反向。5.1_3、用FSM实现一个计数器(采用存储器),对一位的输入进行计数。计数序列为:000,001,011,101,111,010。5.2、用FSM实现一个序列识别器,该FSM的状态转移图如下所示,它能够对一位的串行输入序列中的“1”的数量进行检测。如果FSM发现输入“1”的总数可以被3整除时,输出“1”;否则,输出“0”。同时针对“01011011101”输入序列,写出相应的仿真程序并进行真波测试。2.3 实验方案先根据要求画出状态图,根据状态图编写程序

6、,根据程序编写仿真程序,最后得出结果和结论。2.4 实验步骤5.1_1状态图:S1S0 in=1/1 in=1/0 in=0/0 in=1/0 in=1/0S4S3 in=0/0 in=1/1 in=0/05.1_2状态图:S0 in=00 in=01 in=10 in=11S2S1S3S6S5S4 in=00 in=00 in=00 out=0 out翻转 out=15.1_3状态图:1.根据以上状态图编写源程序(见附录)2.运行综合Run Synthesis3.综合正确后编写仿真程序4.仿真,得到仿真波形,验证结果2.5 故障及分析无故障2.6 仿真与结果5.1_1:如图,1的个数是3的倍

7、数时输出1与预期一致5.1_2:如图,输入01后再输入00,输出0;输入11后再输入00,输出1;输入10后再输入00,输出翻转:与预期一致5.1_3:如图,输出序列为000,001,011,101,111,010(重复)与预期一致5.2:如图,1的个数是3的倍数时输出1与预期一致2.7 心得与体会这次实验通过FSM设计明白了设计的过程和步骤,首先要知道分为哪些状态,设计的是何种电路,如何选择用mealy还是moore型电路,状态转移要如何实现。知道了mealy型和moore型电路的区别:当要求输出对输入快速响应并希望电路简单时选择mealy型,当要求时序输出稳定,能接受输出序列晚一个周期,即

8、选择moore型电路不增加电路复杂性时,选择moore型电路。3 意见和建议建议老师上课还是用中文PPT比较好,另外作业练习也用中文给出来,题目要求也尽量具体些,这样会减少我们学习的成本,更加有效的学习这门课。4 附录源程序:4.1(第一个数据通路)/主模块module text4(S0,S1,S2,S3,Clk,reset,load,outR0,outR1,outACC,outS0,outS1,outS2,outS3,outA); parameter WIDTH=8; /位宽8位 input S0,S1,S2,S3,Clk,reset,load; output WIDTH-1:0 outR0

9、,outR1,outACC,outS0,outS1,outS2,outS3,outA; register #(8) R0(inR0,Clk,reset,load,outR0); register #(8) R1(inR1,Clk,reset,load,outR1); register #(8) ACC(inACC,Clk,reset,load,outACC); mux #(8) S0(S0,inS00,inS01,outS0); mux #(8) S1(S1,inS10,inS11,outS1); mux #(8) S2(S2,inS20,inS21,outS2); mux #(8) S3(S

10、3,inS30,inS31,outS3); add #(8) W1(inA0,inA1,outA); assign inS00=outS3; assign inS10=outS3; assign inS01=outR0; assign inS20=outR0; assign inS11=outR1; assign inS21=outR1; assign inA0=outACC; assign inS31=outACC; assign inACC=outA; assign inA1=outS2; assign inS30=outS2; assign inR1=outS1; assign inR0

11、=outS0;endmodule/加法器模块module add(A,B,C); parameter WIDTH=8; input WIDTH-1:0 A, B; output WIDTH-1:0 C; wire WIDTH:0 DATA; assign DATA=A+B; assign C=DATA7:0;endmodule/寄存器模块module register(D,Clk,reset,load,Q); parameter WIDTH=8; input WIDTH-1:0 D; input Clk,reset,load; output reg WIDTH-1:0 Q;always (po

12、sedge Clk)if (reset)beginQ = 8b0;end else if (load)beginQ = D;endendmodule/二路选择器模块module mux(s,x,y,m); parameter WIDTH=8; input WIDTH-1:0 x,y; input s; output WIDTH-1:0 m;assign m =(s?y:x);endmodule4.2(第二个数据通路)/主模块module text2(SUM_SEL,NEXT_SEL,A_SEL,LD_SUM,LD_NEXT,NEXT_ZERO,outSUM_SEL,outNEXT_SEL,ou

13、tA_SEL,outSUM,outNEXT,outA1,outA2,outMEM);parameter WIDTH=8; input SUM_SEL,NEXT_SEL,A_SEL,LD_SUM,LD_NEXT; wire WIDTH-1:0 inSUM_SEL00,inSUM_SEL01,outSUM_SEL,inNEXT_SEL00,inNEXT_SEL01,outNEXT_SEL; output WIDTH-1:0 outSUM_SEL,outNEXT_SEL,outA_SEL,outSUM,outNEXT,outA1,outA2,outMEM; output NEXT_ZERO; mux #(WIDTH) SUM_SEL(SUM_SEL,inSUM_SEL00,inSUM_SE

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号