4484
- 收藏
- 点赞
- 分享
- 举报
汽车车灯控制系统的VHDL语言实现
汽车车灯控制系统的VHDL语言实现
1. 系统功能及要求:
汽车上有一转弯控制杆,此杆有三种状态:中间位置时,汽车不转弯;向上时,汽车左转;
向下时汽车右转。汽车转弯时相应尾灯相应头灯均闪烁,当应急开关合上时,头灯尾
灯均闪烁。汽车刹车时,2个尾灯发出一直亮的信号。如果汽车刹车时正在转弯,则
相应的转弯闪烁信号不受影响。
2. 逻缉抽象:
由要求转换成真值表
输入信号 输出信号
刹车 应急 左转 右转 左头灯 右头灯 左尾灯 右尾灯
开关 开关 开关 开关 状态 状态 状态 状态
(A) (B) (C) (D) (E) (F) (G) (H)
0 0 0 0 断 断 断 断
0 0 0 1 断 闪 断 闪
0 0 1 0 闪 断 闪 断
0 0 1 1 断 断 断 断
0 1 0 0 闪 闪 闪 闪
0 1 0 1 闪 闪 闪 闪
0 1 1 0 闪 闪 闪 闪
0 1 1 1 断 断 断 断
1 0 0 0 断 断 通 通
1 0 0 1 断 闪 通 闪
1 0 1 0 闪 断 闪 通
1 0 1 1 断 断 断 断
1 1 0 0 闪 闪 通 通
1 1 0 1 闪 闪 通 闪
1 1 1 0 闪 闪 闪 通
1 1 1 1 断 断 断 断
注:断——灯不亮 闪——灯闪烁 通——灯一直亮
3. 由真值表得出逻缉表达式:
E(断)=(C AND D) OR ((NOT B) AND (NOT C));
E(闪)=(B AND (NOT C) ) OR (C AND (NOY(D));
E(通)=0;
F(断)=(C AND D) OR ((NOT B) AND (NOT D));
F(闪)=((NOT C) AND D) OR (B AND (NOT(D));
F(通)=0;
G(断)=(C AND D) OR ((NOT A) AND (NOT B) AND (NOT C));
G(闪)=(C AND (NOT D)) OR ((NOT A) AND B AND (NOT C));
G(通)=A AND (NOT C);
H(断)=(C AND D) OR ((NOT A) AND (NOT B) AND (NOT D));
H(闪)=((NOT C) AND D) OR ((NOT A) AND B AND (NOT D));
H(通)=A AND (NOT D);
4. VHDL语言实现(源程序注释):
library IEEE; ——定义IEEE库,使用std_logic_1164
use IEEE.std_logic_1164.all; std_logic_unsigned 包集合
use IEEE.std_logic_unsigned.all;
entity autolight is ——定义实体autolight
port ( A,B,C,D对应上述四个开关,信号为输入
A: in STD_LOGIC; E,F,G,H 对应上述前后车灯,信号为输出
C: in STD_LOGIC;
B: in STD_LOGIC;
D: in STD_LOGIC;
E: out STD_LOGIC;
F: out STD_LOGIC;
G: out STD_LOGIC;
H: out STD_LOGIC
);
end autolight;
architecture autolight_arch of autolight is ——构造体说明
signal e1,e2,e3,f1,f2,f3,g1,g2,g3,h1,h2,h3,clkk,sel:std_logic; e1对应 E(断)
signal controle,controlf,controlg,controlh:std_logic_vector(2 downto 0); e2对应 E(闪)
e3对应 E(通)
f1,f2,f3,g1,g2,g3
h1,h2,h3 同理
component clk ——元件clk以产生闪烁信号
port (clkin:in std_logic;clkout:out std_logic); 脉冲(为方波)
end component ;
component os ——元件 os 相当于晶体振荡器
port (osout:out std_logic); 产生约8mhz脉冲
end component ;
begin
u1: os port map(clkk); ——调用os产生信号clkk
u2: clk port map(clkk,sel); ——调用clk产生信号sel用于闪烁
--light e ——产生e1,e2,e3,f1,f2,f3,g1,g2,g3
e1<=((not b) and (not c))or(c and d); h1,h2,h3信号
e2<=(b and (not c))or(c and (not d)); 如e1=1则左头灯不亮
e3<='0'; 如e2=1则左头灯闪烁
如e3=1则左头灯一直亮
--light f 同一时刻e1 e2 e3只会有一个为1
f1<=((not b) and (not d))or(c and d);
f2<=((not c)and d)or(b and (not d));
f3<='0';
--light g
g1<=((not a) and (not b) and (not c))or(c and d);
g2<=((not a) and b and (not c))or(c and (not d));
g3<=a and (not c);
--light h
h1<=((not a) and (not b) and (not d))or(c and d);
h2<=((not c) and d) or ((not a)and b and (not d));
h3<=a and (not d);
--control signal ——controle controlf controlg controlh
controle<=e1&e2&e3; 为位失量(2 downto 0),该位变量值
controlf<=f1&f2&f3; 等于e1 e2 e3组合,只可能为100 010
controlg<=g1&g2&g3; 001之一
controlh<=h1&h2&h3;
--light signal of flash is clkin2
e<='0' when controle="001" else --on 如controle=100 则左头灯不亮
sel when controle="010" else --flash 如controle=010 则左头灯闪烁
'1'; --off 如controle=001 则左头灯一直亮
f<='0' when controlf="001" else --on
sel when controlf="010" else --flash
'1'; --off
g<='0' when controlg="001" else --on
sel when controlg="010" else --flash
'1'; --off
h<='0' when controlh="001" else --on
sel when controlh="010" else --flash
'1'; --off
end autolight_arch; ——结束构造体autolight_arch
5. 管脚锁定文件说明:
管脚锁定文件用于将EDA实验板上资源(跳线,开关按键,数码管,LED指示灯,蜂鸣器)
与xilinx xc9572芯片管脚相连,使用者可通过对按键和开关的操作加上指示灯和数码管的显示来判断程序是否正确。
本系统使用xc9572中p33 p34 p35 p36作为输入端,对应程序中A B C D,在EDA
实验板上对应跳线的最左边四个。使用p29 p28作为左右头灯,对应LED发光管
最左边两个。使用p29 p28作为左右尾灯,对应LED发光管最右边两个。
net e loc=p29;
net f loc=p28;
net g loc=p40;
net h loc=p42;
net d loc=p36;
net c loc=p35;
net b loc=p34;
net a loc=p33;
6. 元件clk 说明:
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
entity clk is ------clk的作用是分频以产生闪烁信号
port (
clkin: in std_logic;
clkout: out STD_LOGIC
);
end clk;
architecture clk_arch of clk is
signal clk:STD_LOGIC;
signal counter:std_logic_vector(24 downto 0);
begin
clkout<=counter(24);
process(CLKin)
begin
if CLKin='1' and CLKin'event then
COUNTER<=COUNTER+1;
end if;
end process;
end clk_arch;
7. autolight具体实现步骤:
#1.在project manager下新建文件目录
#2.将autolight.vhd autolight.ucf os.xnf clk.vhd拷入新建文件目录中
#3.synthesis implementation programing写好芯片,注意不要忘记设管脚锁定
文件;
#4.用短路器接通或断开作为0 or 1输入,通过对A B C D 操作观察LED指示灯
是否指示正确。
1. 系统功能及要求:
汽车上有一转弯控制杆,此杆有三种状态:中间位置时,汽车不转弯;向上时,汽车左转;
向下时汽车右转。汽车转弯时相应尾灯相应头灯均闪烁,当应急开关合上时,头灯尾
灯均闪烁。汽车刹车时,2个尾灯发出一直亮的信号。如果汽车刹车时正在转弯,则
相应的转弯闪烁信号不受影响。
2. 逻缉抽象:
由要求转换成真值表
输入信号 输出信号
刹车 应急 左转 右转 左头灯 右头灯 左尾灯 右尾灯
开关 开关 开关 开关 状态 状态 状态 状态
(A) (B) (C) (D) (E) (F) (G) (H)
0 0 0 0 断 断 断 断
0 0 0 1 断 闪 断 闪
0 0 1 0 闪 断 闪 断
0 0 1 1 断 断 断 断
0 1 0 0 闪 闪 闪 闪
0 1 0 1 闪 闪 闪 闪
0 1 1 0 闪 闪 闪 闪
0 1 1 1 断 断 断 断
1 0 0 0 断 断 通 通
1 0 0 1 断 闪 通 闪
1 0 1 0 闪 断 闪 通
1 0 1 1 断 断 断 断
1 1 0 0 闪 闪 通 通
1 1 0 1 闪 闪 通 闪
1 1 1 0 闪 闪 闪 通
1 1 1 1 断 断 断 断
注:断——灯不亮 闪——灯闪烁 通——灯一直亮
3. 由真值表得出逻缉表达式:
E(断)=(C AND D) OR ((NOT B) AND (NOT C));
E(闪)=(B AND (NOT C) ) OR (C AND (NOY(D));
E(通)=0;
F(断)=(C AND D) OR ((NOT B) AND (NOT D));
F(闪)=((NOT C) AND D) OR (B AND (NOT(D));
F(通)=0;
G(断)=(C AND D) OR ((NOT A) AND (NOT B) AND (NOT C));
G(闪)=(C AND (NOT D)) OR ((NOT A) AND B AND (NOT C));
G(通)=A AND (NOT C);
H(断)=(C AND D) OR ((NOT A) AND (NOT B) AND (NOT D));
H(闪)=((NOT C) AND D) OR ((NOT A) AND B AND (NOT D));
H(通)=A AND (NOT D);
4. VHDL语言实现(源程序注释):
library IEEE; ——定义IEEE库,使用std_logic_1164
use IEEE.std_logic_1164.all; std_logic_unsigned 包集合
use IEEE.std_logic_unsigned.all;
entity autolight is ——定义实体autolight
port ( A,B,C,D对应上述四个开关,信号为输入
A: in STD_LOGIC; E,F,G,H 对应上述前后车灯,信号为输出
C: in STD_LOGIC;
B: in STD_LOGIC;
D: in STD_LOGIC;
E: out STD_LOGIC;
F: out STD_LOGIC;
G: out STD_LOGIC;
H: out STD_LOGIC
);
end autolight;
architecture autolight_arch of autolight is ——构造体说明
signal e1,e2,e3,f1,f2,f3,g1,g2,g3,h1,h2,h3,clkk,sel:std_logic; e1对应 E(断)
signal controle,controlf,controlg,controlh:std_logic_vector(2 downto 0); e2对应 E(闪)
e3对应 E(通)
f1,f2,f3,g1,g2,g3
h1,h2,h3 同理
component clk ——元件clk以产生闪烁信号
port (clkin:in std_logic;clkout:out std_logic); 脉冲(为方波)
end component ;
component os ——元件 os 相当于晶体振荡器
port (osout:out std_logic); 产生约8mhz脉冲
end component ;
begin
u1: os port map(clkk); ——调用os产生信号clkk
u2: clk port map(clkk,sel); ——调用clk产生信号sel用于闪烁
--light e ——产生e1,e2,e3,f1,f2,f3,g1,g2,g3
e1<=((not b) and (not c))or(c and d); h1,h2,h3信号
e2<=(b and (not c))or(c and (not d)); 如e1=1则左头灯不亮
e3<='0'; 如e2=1则左头灯闪烁
如e3=1则左头灯一直亮
--light f 同一时刻e1 e2 e3只会有一个为1
f1<=((not b) and (not d))or(c and d);
f2<=((not c)and d)or(b and (not d));
f3<='0';
--light g
g1<=((not a) and (not b) and (not c))or(c and d);
g2<=((not a) and b and (not c))or(c and (not d));
g3<=a and (not c);
--light h
h1<=((not a) and (not b) and (not d))or(c and d);
h2<=((not c) and d) or ((not a)and b and (not d));
h3<=a and (not d);
--control signal ——controle controlf controlg controlh
controle<=e1&e2&e3; 为位失量(2 downto 0),该位变量值
controlf<=f1&f2&f3; 等于e1 e2 e3组合,只可能为100 010
controlg<=g1&g2&g3; 001之一
controlh<=h1&h2&h3;
--light signal of flash is clkin2
e<='0' when controle="001" else --on 如controle=100 则左头灯不亮
sel when controle="010" else --flash 如controle=010 则左头灯闪烁
'1'; --off 如controle=001 则左头灯一直亮
f<='0' when controlf="001" else --on
sel when controlf="010" else --flash
'1'; --off
g<='0' when controlg="001" else --on
sel when controlg="010" else --flash
'1'; --off
h<='0' when controlh="001" else --on
sel when controlh="010" else --flash
'1'; --off
end autolight_arch; ——结束构造体autolight_arch
5. 管脚锁定文件说明:
管脚锁定文件用于将EDA实验板上资源(跳线,开关按键,数码管,LED指示灯,蜂鸣器)
与xilinx xc9572芯片管脚相连,使用者可通过对按键和开关的操作加上指示灯和数码管的显示来判断程序是否正确。
本系统使用xc9572中p33 p34 p35 p36作为输入端,对应程序中A B C D,在EDA
实验板上对应跳线的最左边四个。使用p29 p28作为左右头灯,对应LED发光管
最左边两个。使用p29 p28作为左右尾灯,对应LED发光管最右边两个。
net e loc=p29;
net f loc=p28;
net g loc=p40;
net h loc=p42;
net d loc=p36;
net c loc=p35;
net b loc=p34;
net a loc=p33;
6. 元件clk 说明:
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
entity clk is ------clk的作用是分频以产生闪烁信号
port (
clkin: in std_logic;
clkout: out STD_LOGIC
);
end clk;
architecture clk_arch of clk is
signal clk:STD_LOGIC;
signal counter:std_logic_vector(24 downto 0);
begin
clkout<=counter(24);
process(CLKin)
begin
if CLKin='1' and CLKin'event then
COUNTER<=COUNTER+1;
end if;
end process;
end clk_arch;
7. autolight具体实现步骤:
#1.在project manager下新建文件目录
#2.将autolight.vhd autolight.ucf os.xnf clk.vhd拷入新建文件目录中
#3.synthesis implementation programing写好芯片,注意不要忘记设管脚锁定
文件;
#4.用短路器接通或断开作为0 or 1输入,通过对A B C D 操作观察LED指示灯
是否指示正确。
我来回答
回答1个
时间排序
认可量排序
认可0
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片![alt](url)
相关问答
-
2013-11-20 20:07:27
-
2018-06-10 20:33:32
-
2013-08-23 13:23:27
-
2012-12-24 15:37:03
-
2012-12-24 14:56:39
-
2013-11-22 22:07:50
-
2018-11-27 14:33:22
-
2008-10-02 20:17:49
-
2008-10-02 20:17:06
-
2018-11-29 14:10:50
-
2018-08-17 16:59:01
-
2018-07-04 16:32:12
-
2018-08-07 10:39:14
-
2008-10-02 20:40:04
-
2019-01-10 16:56:32
-
2019-01-14 10:34:40
-
2018-12-29 11:16:03
-
2012-12-24 15:34:21
-
2018-12-06 11:49:56
无更多相似问答 去提问
点击登录
-- 积分
-- E币
提问
—
收益
—
被采纳
—
我要提问
切换马甲
上一页
下一页
悬赏问答
-
50帮忙解决个交叉编译的问题
-
20帮忙交叉编译个源码
-
5Hi3516CV610 如何使用SD卡升级固件
-
5cat /dev/logmpp 报错 <3>[ vi] [func]:vi_send_frame_node [line]:99 [info]:vi pic queue is full!
-
50如何获取vpss chn的图像修改后发送至vo
-
5FPGA通过Bt1120传YUV422数据过来,vi接收不到数据——3516dv500
-
50SS928 运行PQtools 拼接 推到设备里有一半画面会异常
-
53536AV100的sample_vdec输出到CVBS显示
-
10海思板子mpp怎么在vi阶段改变视频数据尺寸
-
10HI3559AV100 多摄像头同步模式
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
提醒
你的问题还没有最佳答案,是否结题,结题后将扣除20%的悬赏金
取消
确认
提醒
你的问题还没有最佳答案,是否结题,结题后将根据回答情况扣除相应悬赏金(1回答=1E币)
取消
确认