ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:189.84KB ,
资源ID:7579112      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7579112.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于SOPC的LED循环流水灯控制设计说明.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于SOPC的LED循环流水灯控制设计说明.docx

1、基于SOPC的LED循环流水灯控制设计说明课程报告设计课题: 基于SOPC 的LED 循环流水灯控制设计姓 名: XXX 专 业: 集成电路设计与集成系统 学 号: 1115103004 日 期 2014 年 11月 18 日 指导教师: XXX 华侨大学信息科学与工程学院电子工程系基于SOPC的LED循环流水灯控制设计1. 设计的任务与要求1. 将8 只LED 灯编号,奇数号亮1 秒,灭2 秒,偶数号亮3 秒,灭3 秒。2. 用数码管显示每个灯的亮灭时间。3. 循环点亮。2系统设计整体硬件电路框图 整体电路设计由一个锁相环,SOPC搭建的CPU模块组成,由DE2部时钟50MHZ输入控制,输出

2、接LED7.08个LED灯,HEX0-HEX7 8个数码管,用程序编程控制,来实现LED循环流水灯数码管计时功能的实现。三.单元电路设计 锁相环设计模块(PLL)SOPC设计模块在DE2 平台上建立SOPC系统的硬件,这个系统包括一个NIos II/s 嵌入式处理器、存储器、一个JTAG UART 及一个定时器,一个ID 模块和IO模块。另外,我们将加入一个自定义组件,实现对DE2 平台上七段数码管的控制。SOPC模块硬件电路图四:仿真结果5软件设计 程序详见附录六系统测试: 实验仪器用DE2板验证,芯片型号为EP2C35F672C6,将计算机软件与DE2板相连。用8只LED灯实现循环点亮,并

3、在8只数码管显示每只LED灯的亮灭时间。七结论:从DE2板实验结果可以看出,该实验现象满足设计的任务与要求,即:1. 将8 只LED 灯编号,奇数号亮1 秒,灭2 秒,偶数号亮3 秒,灭3 秒。2. 用数码管显示每个灯的亮灭时间。3. 循环点亮。满足了该设计的1,2,3点要求,唯一不足的地方是在用数码管显示每个灯的亮灭时间时,我是用usleep()函数来延迟的,时间精度方面可能比不上用定时计数器来的准确,可以做进一步改进。附录:软件程序:#include system.h#include alt_types.h#include unistd.h#include io.hint main (vo

4、id) alt_u8 led=0x01; alt_u32 count; volatile int i; /i用来控制循环的次数 volatile int j; /j用来控制每次循环时间为1S while(1) led=0x01; *(unsigned int *)PIO_LED_BASE = led; /点亮第一个LED灯 for(i=1,j=1000000,count=0x00000001;i0;i-) /用数码管控制亮的时间1S IOWR(SEG7_LUT_8_0_BASE,0,count); /第一个数码管显示count值1 usleep(j); /j=1000000,延时1秒 coun

5、t=count-0x00000001; /count值减1 IOWR(SEG7_LUT_8_0_BASE,0,count); /第一个数码管显示count值0 led=0x00; *(unsigned int *)PIO_LED_BASE = led; /熄灭第一个LED灯 for(i=2,j=1000000,count=0x00000002;i0;i-) /用数码管控制熄灭的时间2S IOWR(SEG7_LUT_8_0_BASE,0,count); usleep(j); count=count-0x00000001; IOWR(SEG7_LUT_8_0_BASE,0,count); led=

6、0x02; *(unsigned int *)PIO_LED_BASE = led;/点亮第二个LED灯 for(i=3,j=1000000,count=0x00000030;i0;i-) /用数码管控制亮的时间3S IOWR(SEG7_LUT_8_0_BASE,0,count); usleep(j); count=count-0x00000010; IOWR(SEG7_LUT_8_0_BASE,0,count); led=0x00; *(unsigned int *)PIO_LED_BASE = led;/熄灭第二个LED灯 for(i=3,j=1000000,count=0x0000003

7、0;i0;i-)/用数码管控制熄灭的时间3S IOWR(SEG7_LUT_8_0_BASE,0,count); usleep(j); count=count-0x00000010; IOWR(SEG7_LUT_8_0_BASE,0,count); led=0x04; *(unsigned int *)PIO_LED_BASE = led;/点亮第三个LED灯 for(i=1,j=1000000,count=0x00000100;i0;i-) /用数码管控制亮的时间1S IOWR(SEG7_LUT_8_0_BASE,0,count); usleep(j); count=count-0x00000

8、100; IOWR(SEG7_LUT_8_0_BASE,0,count); led=0x00; *(unsigned int *)PIO_LED_BASE = led;/熄灭第三个LED灯 for(i=2,j=1000000,count=0x00000200;i0;i-)/用数码管控制熄灭的时间2S IOWR(SEG7_LUT_8_0_BASE,0,count); usleep(j); count=count-0x00000100; IOWR(SEG7_LUT_8_0_BASE,0,count); led=0x08; *(unsigned int *)PIO_LED_BASE = led;/点

9、亮第四个LED灯 for(i=3,j=1000000,count=0x00003000;i0;i-)/用数码管控制亮的时间3S IOWR(SEG7_LUT_8_0_BASE,0,count); usleep(j); count=count-0x00001000; IOWR(SEG7_LUT_8_0_BASE,0,count); led=0x00; *(unsigned int *)PIO_LED_BASE = led;/熄灭第四个LED灯 for(i=3,j=1000000,count=0x00003000;i0;i-)/用数码管控制熄灭的时间3S IOWR(SEG7_LUT_8_0_BASE

10、,0,count); usleep(j); count=count-0x00001000; IOWR(SEG7_LUT_8_0_BASE,0,count); led=0x10; *(unsigned int *)PIO_LED_BASE = led;/点亮第五个LED灯 for(i=1,j=1000000,count=0x00010000;i0;i-)/用数码管控制亮的时间1S IOWR(SEG7_LUT_8_0_BASE,0,count); usleep(j); count=count-0x00010000; IOWR(SEG7_LUT_8_0_BASE,0,count); led=0x00

11、; *(unsigned int *)PIO_LED_BASE = led;/熄灭第五个LED灯 for(i=2,j=1000000,count=0x00020000;i0;i-)/用数码管控制熄灭的时间2S IOWR(SEG7_LUT_8_0_BASE,0,count); usleep(j); count=count-0x00010000; IOWR(SEG7_LUT_8_0_BASE,0,count); led=0x20; *(unsigned int *)PIO_LED_BASE = led;/点亮第六个LED灯 for(i=3,j=1000000,count=0x00300000;i0

12、;i-)/用数码管控制亮的时间3S IOWR(SEG7_LUT_8_0_BASE,0,count); usleep(j); count=count-0x00100000; IOWR(SEG7_LUT_8_0_BASE,0,count); led=0x00; *(unsigned int *)PIO_LED_BASE = led;/熄灭第六个LED灯 for(i=3,j=1000000,count=0x00300000;i0;i-)/用数码管控制熄灭的时间3S IOWR(SEG7_LUT_8_0_BASE,0,count); usleep(j); count=count-0x00100000;

13、IOWR(SEG7_LUT_8_0_BASE,0,count); led=0x40; *(unsigned int *)PIO_LED_BASE = led;/点亮第七个LED灯 for(i=1,j=1000000,count=0x01000000;i0;i-)/用数码管控制亮的时间1S IOWR(SEG7_LUT_8_0_BASE,0,count); usleep(j); count=count-0x01000000; IOWR(SEG7_LUT_8_0_BASE,0,count); led=0x00; *(unsigned int *)PIO_LED_BASE = led;/熄灭第七个LE

14、D灯 /for(i=0;i0;i-)/用数码管控制熄灭的时间2S IOWR(SEG7_LUT_8_0_BASE,0,count); usleep(j); count=count-0x01000000; IOWR(SEG7_LUT_8_0_BASE,0,count); led=0x80; *(unsigned int *)PIO_LED_BASE = led;/点亮第八个LED灯 /for(i=0;i0;i-)/用数码管控制亮的时间3S IOWR(SEG7_LUT_8_0_BASE,0,count); usleep(j); count=count-0x10000000; IOWR(SEG7_LU

15、T_8_0_BASE,0,count); led=0x00; *(unsigned int *)PIO_LED_BASE = led;/熄灭第八个LED灯 /for(i=0;i0;i-)/用数码管控制熄灭的时间3S IOWR(SEG7_LUT_8_0_BASE,0,count); usleep(j); count=count-0x10000000; IOWR(SEG7_LUT_8_0_BASE,0,count); return 0;1.添加自定义组件七段数码管控制器 SEG7_LUT.V 是一个查找表,完成七段码显示的译码。当输入iDIG在0x00xF 之间变化时,输出oSEG 的七段码也发生

16、相应的变化,并在数码管上显示iDIG 的值。代码1 SEG7_LUT.Vmodule SEG7_LUT ( oSEG, iDIG);input 3:0 iDIG;output 6:0 oSEG;reg 6:0 oSEG;always(iDIG)begin case(iDIG) 4h1:oSEG=7b1111001; 4h2:oSEG=7b0100100; 4h3:oSEG=7b0110000; 4h4:oSEG=7b0011001; 4h5:oSEG=7b0010010; 4h6:oSEG=7b0000010; 4h7:oSEG=7b1111000; 4h8:oSEG=7b0000000; 4

17、h9:oSEG=7b0011000; 4ha:oSEG=7b0001000; 4hb:oSEG=7b0000011; 4hc:oSEG=7b1000110; 4hd:oSEG=7b0100001; 4he:oSEG=7b0000110; 4hf:oSEG=7b0001110; 4h0:oSEG=7b1000000; endcaseendendmoduleSEG7_LUT_8.V,对SEG7_LUT.V 进行了8 次例化,分别对应于七段数码管HEX0HEX7。代码2 SEG7_LUT_8.Vmodule SEG7_LUT_8 (oSEG0,oSEG1,oSEG2,oSEG3,oSEG4,oSEG

18、5,oSEG6,oSEG7, iDIG,iWR,iCLK,iRST_N);input 31:0 iDIG;input iWR,iCLK,iRST_N;output 6:0 oSEG0,oSEG1,oSEG2,oSEG3,oSEG4,oSEG5,oSEG6,oSEG7;reg 31:0 rDIG;always(posedge iCLK or negedge iRST_N)begin if(!iRST_N) rDIG = 0; else begin if(iWR) rDIG = iDIG; endendSEG7_LUT u0 (oSEG0,rDIG3:0);SEG7_LUT u1 (oSEG1,rDIG7:4);SEG7_LUT u2 (oSEG2,rDIG11:8);SEG7_LUT u3 (oSEG3,rDIG15:12);SEG7_LUT u4 (oSEG4,rDIG19:16);SEG7_LUT u5 (oSEG5,rDIG23:20);SEG7_LUT u6 (oSEG6,rDIG27:24);SEG7_LUT u7 (oSEG7,rDIG31:28);endmodule

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1