- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
开
放
实
验
报
告
题 目: 基于VHDL的路彩灯控制系统
班 级:
学 号:
姓 名:
指导教师:
时 间: 2010年6月30日
基于VHDL的路彩灯控制系统的设计方法,掌握VHDL的设计思想,,建立完整系统设计的概念。
八路彩灯控制系统设定有四种花样变化,这四种花样可以进行自动切换,且每种花样可以选择不同的频率,四种花样分别为:设计原理
用VHDL进行设计,首先应该理解,VHDL语言是一种全方位硬件描述语言,包括系统行为级,寄存器传输级和逻辑门级多个设计层次。应充分利用VHDL“自顶向下”的设计优点以及层次化的设计概念,层次概念对于设计复杂的数字系统是非常有用的,它使得我们可以从简单的单元入手,逐渐构成庞大而复杂的系统。在电路中以1代表灯亮,以0代表灯灭,由0、1按不同的规律组合代表不同的灯光图案,同时使其选择不同的频率,从而实现多种图案多种频率的花样功能显示。在该电路中只需简单的修改程序就可以灵活地调整彩灯图案和变化方式。
首先应进行系统模块的划分,规定每一模块的功能以及各个模块之问的接口。子模块及其功能
? 本次设计分为四个子模块,即路彩灯花样控制器、四频率输出分频器,,其子模块及其功能如下:
四频率输出分频器:在本次设计中,我们只设计了四种花样,我们要求这四种花样以不同的频率显示,而只有一个输入的时钟信号,所以我们对所输入的时钟信号进行2分频、4分频、8分频、16分频,得到四种频率信号路彩灯花样控制器library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity caideng is
port(clk: in std_logic;---时钟
s: in std_logic_vector(1 downto 0);---速度
clr: in std_logic;---清零 低电平有效
t:in std_logic;----暂停 低电平有效
f:in std_logic_vector(1 downto 0);---模式
q0,q1,q2,q3,q4,q5,q6,q7:out std_logic);---输出
end caideng;
architecture rtl of caideng is
signal clk1:std_logic;---1hz始时钟
signal clk2:std_logic;---模式频率
signal clk3:std_logic;
signal cnt:std_logic_vector(2 downto 0);
signal q:std_logic_vector(7 downto 0);
begin
process(t) ---暂停
begin
if t=0
then clk3=1;
else clk3=clk;
end if;
end process;
process(clk3)---1hz分频
variable count:integer range 0 to 4;
begin
if clk3event and clk3=1 then
if count=4
then clk1=not clk1;
count:=0;
else count:=count+1;
end if;
end if;
end process;
process(clk1,s)---模式分频
variable count1:std_logic_vector(2 downto 0);
begin
if clk1event and clk1=1
then count1:=count1+1;
end if;
case s is
when00=clk2=count1(2);
when01=clk2=count1(1);
when10=clk2=count1(0);
when11=clk2=clk1;
end case;
end process;
process(clk2,clr,f)---清零
begin
if clr=0 then cnt=000;
q
elsif clk2event and clk2=1 then
cnt=cnt+1;
if f=00 then ----全亮,全灭,隔一亮
case cnt is
when000=q
when001=q
when010
文档评论(0)