电子技术实验大作业实验报告 上海交通大学_第1页
电子技术实验大作业实验报告 上海交通大学_第2页
电子技术实验大作业实验报告 上海交通大学_第3页
电子技术实验大作业实验报告 上海交通大学_第4页
电子技术实验大作业实验报告 上海交通大学_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、电子技术实验大作业实验报告 1. 实验名称 四位二进制数的可控加法 / 减法 2. 设计思路 本作业主要完成的是四位二进制数的可控加法。实现了附加功能中的在四位数码管上显示和数值溢出的显示功能。 本作业主要由两个模块组成,一个是主程序模块,负责较简单的加法运算;另外一个是a_to_g子程序模块,输入一个4位二进制数字,用来把数字显示在数字管上。数值溢出则是看cout位是否为1,为1则溢出。 3. 程序代码 timescale 1ns / 1ps / / Company: / Engineer: / / Create Date: 05:40:39 04/18/2014 / Design Name

2、: / Module Name: adder / Project Name: / Target Devices: / Tool versions: / Description: / / Dependencies: / / Revision: / Revision 0.01 - File Created / Additional Comments: / / module adder( input 3:0sw1,sw2, /input button, input clk, output 6:0dp_a_to_g, output 3:0out0 ); reg cout; reg 3:0sum; al

3、ways (sw1 or sw2)begin cout,sum=sw1+sw2; end a_to_g ATOG(.sw(sum),.clk(clk),.dp_a_to_g(dp_a_to_g),.out0(out0),.cout(cout); endmodule module a_to_g( input 3:0sw, input clk, input cout, output reg 6:0dp_a_to_g, output reg 3:0out0 ); integer num; integer s; integer i; initial begin i=0; end always (pos

4、edge clk) begin i=i+1; if (i16:143) i=0; s=i15:14; if (cout) begin case(s) 0:out0=4b0111; 1:out0=4b1011; 2:out0=4b1101; 3:out0=4b1110; endcase case(s) 0:num=sw0; 1:num=sw1; 2:num=sw2; 3:num=sw3; endcase end else begin out0=4b0000; num=2; end end always (*) case(num) 0:dp_a_to_g=7b0000001; 1:dp_a_to_

5、g=7b1001111; 2:dp_a_to_g=7b0110000; default: dp_a_to_g=7b1111111; endcase endmodule 4. 实验心得 让四位数码管循环显示时,如果设定的循环间隔太短,则因为毛刺等之类的原因,会使整个数码管亮起来,人眼只能看到四个八。而设定的频率太低的话,则无法造成人眼短暂停留视觉的效果,而是一个一个亮。选择正确的频率才能得到正确的结果。 做此次试验的最大心得就是编程序得走一步看一步,按模块功能一块一块做。做完一块,检查一块。之前一开始我选的题目是数字时钟,一鼓作气把功能大部分都写出来之后,发现了一堆bug,改了好几个小时都没有办

6、法排除 ,只能重新做。很可惜浪费了时间。 第二个体会是感受到了高级语言和verilog这种硬件描述语言的差异所在。对于一般使用的高级语言来说,有成熟的封装和函数,以及各种各样的数据类型,使用起来比较容易上手。而对verilog来说,因为跟硬件更为靠近,很多时候不能光码代码,还得想想能否实验。而且各种规则也不尽相同,很容易做无用功。需要从低级到高级循序渐进的学习,以为掌握一种语言就可以吃遍天下的想法是幼稚的。 学习路上没有捷径,今天在学习verilog的路上真可是又复习了一遍这个人生哲理了! module adder(number1,number2,sum,overflow); input 3:

7、0 number1; input 3:0 number2; output 3:0 sum; output overflow; wire c1,c2,c3; assign sum0=number10 number20; assign c1 = number10 & number20; assign sum1=number11number21c1; assign c2 = (number11 & number21) | (number11 & c1) | (number21 & c1); assign sum2=number12number22c2; assign c3 = (number12 & number22) | (number12 & c2) | (number22 & c2); assi

温馨提示

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

最新文档

评论

0/150

提交评论