fpga按键控制数码管led的仿真程序怎么写

LED控制VHDL程序与仿真_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
LED控制VHDL程序与仿真
&&武汉理工大学 FPGA EDA 课程实验
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢博客访问: 42414
博文数量: 98
博客积分: 3740
博客等级: 中校
技术积分: 1000
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: 嵌入式
&&& 在大屏幕视频显示系统具有亮度高、视角广、寿命长、性价比高,因此在银行、交通、广场、体育场馆等公共场合得到了广泛的应用。&&& 系统是大屏幕LED视频显示的核心,它负责产生各种显示控制信号,对视频数据进行分割、存储、灰度扫描并按特定的方式输出数据到显示屏体供驱动显示。从电路组成看,视频控制系统包括计算机箱体内的预处理卡及显示屏体内的可级联的视频单元;视频单元(或预处理卡)由控制单元 (CPLD)和存储器单元(SRAM组)以及I/O接口单元等部分组成。LED控制卡视频控制器单元的实现:
灰度扫描方法:对于多灰度级LED大屏幕显示而言,灰度的分层(灰度扫描)显示方法是视频设计的关键,由于LED的发光亮度与扫描周期内的发光时间近似成正比,所 以灰度等级的实现通常是由控制LED的发光时间与扫描周期的比值,即采用调制占空比来实现的。&&& 视频单元设计:根据上述256级灰度视频数据灰度扫描的原理设计了256级灰度视频。&&& 按功能来分,设计的视频单元可以分为四个部分:控制单元、存储器单元(SRAM)、数据缓冲器和接口单元。视频单元的核心是存储器单元,计算机屏幕上每128行数据对应一个存储器单元,显示屏所要实时显示的内容(即计算机屏幕图像数据)都存放在存储器单元中。控制单元产生存储器单元的地址信号和分时选通信号及灰度扫描控制信号如扫描地址信号、消隐、移位、锁存脉冲等。数据缓冲器用于实现视频数据的读写(输出输入)缓冲。接口 单元用于产生符合显示屏驱动电路接口格式的信号。&&& 当一个帧存储器进行数据写入时,另一个帧存储器进行数据扫描读出,这样两组存储器可以分别交替工作于视频数据高速扫描和高速写入两种方式,因而可以提高数据读写的速率和显示屏的帧频,播放出来的图像更加稳定。
&&&& 视频图像信号频率高、数据量大,要求实时处理,加之LED大屏幕的数字逻辑相当复杂,采用复杂可编程逻辑器件(CPLD)设计系统中的关键控制电路,可以简化系统结构,便于调试。用按位分时显示的方法设计了256级灰度*256级灰度(红、绿双基色)视频单元的控制单元部分,经测试画面清晰稳定,颜色丰富,取得了预期的效果。&&& 首先是器件选型。为了提高器件的利用率,从结构化观点出发,统计出视频存储单元、数据缓冲器和接口单元需要的控制信号数目为56,决定采用1片控制芯片。该芯片包含32个GLB,192个寄存器,I/O口及输入数为72,门数为6000,速度为70MHz,具有在系统编程功能,能够比较高效地满足应用要求,同时还可兼顾系统今后的重构。&&& 按照设计要求,控制芯片用于产生读、写地址信号、扫描地址信号、分时选通控制信号和一些显示控制信号如消隐、移位、打入脉冲等。在设计中采用了“自顶向 下,逐步细化”的策略。
结束语&&& 本文讨论了大屏幕视频单元中的灰度扫描方法,提出了256级灰度扫描时的实现方案,并用CPLD器件实现其控制电路。由于采用了EDA工具,降低了设计难度,缩短了开发周朗,同时由于只需一片集成电路即可实现过去需要几十片中规模集成电路的控制功能,印刷板的面积大大缩小,系统抗干扰能力显著增强,此外ISP功能给电路板的调试和系统的维护带来了很大的方便,并且有利于系统今后的升级和重构。
阅读(134) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。1114人阅读
按键控制led
设计要求:通过8个按键分别控制一个led的亮灭。
该实验有两个模块:按键缓存模块和由按键值控制led模块
按键缓存模块:通过二级缓存,将按键值存入key_r1,防止按键时产生的尖峰脉冲影响按键值。
由按键值控制led模块:采用case语句,一一对应控制led的亮灭。
顶层代码:
module&keyled(clk,rst_n,key,led);
input&clk;
input&rst_n;
input&[7:0]key;
output&[7:0]led;
//二级缓存按键数据
reg&[7:0]key_r0,key_r1;
always&@(posedge&clk&or&negedge&rst_n)
&&&&if(!rst_n)begin
&&&&&&& key_r0&&=&8'd0;
&&&&&&& key_r1&&=&8'd0;
&&&&else&begin
&&&&&&& key_r0&&=&key;
&&&&&&& key_r1&&=&key_r0;
reg&[7:0]led_r;
always&@(key_r1)begin
&&&&case(key_r1)
&&&&&&& 8'b:led_r&=&8'b;
&&&&&&& 8'b:led_r&=&8'b;
&&&&&&& 8'b:led_r&=&8'b;
&&&&&&& 8'b:led_r&=&8'b;
&&&&&&& 8'b:led_r&=&8'b;
&&&&&&& 8'b:led_r&=&8'b;
&&&&&&& 8'b:led_r&=&8'b;
&&&&&&& 8'b:led_r&=&8'b;
&&&&&&&&default:led_r&=&8'b;
& &&endcase
assign&led&=&led_r;
测试文件:除了clk,rst_n信号外,还设置了8+1种不同的key值(最后一种是乱序的按键),以便观察led。
`timescale 1ns/1ns
`define clk_period 20
module&keyled_tb;
reg&rst_n;
reg&[7:0]key;
wire&[7:0]led;
keyled keyled(
&&&&&&&&.clk(clk),
&&&&&&&&.rst_n(rst_n),
&&&&&&&&.key(key),
&&&&&&&&.led(led)
&&&&&&&&);
initial&clk=1;
always#(`clk_period/2)clk=~clk;
initial&begin
&&& rst_n=0;
&&& key=0;
&&&&#(`clk_period*20+1);
&&& rst_n=1;
&&&&#`clk_period;
&&& key=8'b;
&&&&#(`clk_period*10);
&&& key=8'b;
&&&&#(`clk_period*10);
&&& key=8'b;
&&&&#(`clk_period*10);
&&& key=8'b;
&&&&#(`clk_period*10);
&&& key=8'b;
&&&&#(`clk_period*10);
&&& key=8'b;
&&&&#(`clk_period*10);
&&& key=8'b;
&&&&#(`clk_period*10);
&& &key=8'b;
&&&&#(`clk_period*10);
&&& key=8'b;
&&&&#(`clk_period*10);
仿真波形图:
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:4293次
排名:千里之外
原创:12篇
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'FPGA入门系列实验教程――按键控制LED亮灭_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
FPGA入门系列实验教程――按键控制LED亮灭
&&FPGA入门系列教程全套资料
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 fpga led闪烁 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信