zxj123

zxj123

0个粉丝

92

问答

0

专栏

0

资料

zxj123  发布于  2012-12-24 14:59:30
采纳率 0%
92个问答
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个
时间排序
认可量排序

我不xqb

0个粉丝

7

问答

0

专栏

0

资料

我不xqb 2013-12-03 22:28:36
认可0
终于看完了~~~











[img]static/image/common/sigline.gif[/img]
[url=http://saadianyuan.com]电源适配器[/url]
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区