zxj123

zxj123

0个粉丝

92

问答

0

专栏

0

资料

zxj123  发布于  2012-12-24 15:02:48
采纳率 0%
92个问答
3221

交通灯VHDL

 
1、 设计要求的定义
设计组成:2位BCD码(减法)计数器、BCD码2选一开关(MUX),动态扫描脉冲产生器, LED四——七译码器,置位电路,单脉冲发生电路,LED指示灯显示。

功能要求:红灯(60秒)--黄灯(5秒)--绿灯(35秒)--黄灯循环,暂停(S2)、复位功能(S1)、动态扫描,倒计时显示,最后3秒
报警,发光二极管模拟红绿灯显示等。
2、使用的VHDL库声明
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;

2、 设计实体声明
entity Eda_7064 is
    port (
        GCLK,STOP,RESET,in std_logic;
    --公用时钟GCLK,暂停按钮(S2);复位(S1),
LED: OUT std_logic_vector(7 downto 0); --D8、D7…D2、D1;
BCDOUT: buffer std_logic_vector(6 downto 0); --数码管段选a、b、c、d、e、f、g;
DIG_SEL: out std_logic_vector(3 downto 0); --数码管位选A1、A2、A3、A4;
BEEP,DP: out std_logic;    --SPK、DP
    );
end EDA_7128;
  
实体声明中包含了原理框图的全部输入、输出端口定义。
5、结构声明
architecture EDA1_arch of EDA_7064 is--构件声明应在此处
SIGNAL STATE:STD_LOGIC_VECTOR(1 DOWNTO 0):="00";--状态值
signal BCD,BCD1,BCD2:STD_logic_vector(3 downto 0);--
signal REFRESH: std_logic;---(1 downto 0);-----位扫秒信号
signal CLK1,STA_F:std_logic;    ----进位及灯状态转换标识
signal COUNTER:std_logic_vector(7 downto 0);----內部分频产生秒信号源。
signal R1,R2,CLK_OUT,CLK_BUFF,S1,S2:std_logic;--键盘去抖用信号
6、程序主体
从begin开始。
begin
DIG_SEL3<='1';-----关闭A3
DIG_SEL4<='1';-----关闭A4
S1<=CLK_BUFF  ; ---S1为秒钟
CLK_BUFF<='1' when (COUNTER="111111") else  
'0';
process(CLK_BUFF)
begin
   if  CLK_BUFF='1' and CLK_BUFF'event then
       CLK_OUT<=not CLK_OUT;
   end if;
end process;

process(GCLK)  ---内部分频
begin
   if  GCLK='1' and GCLK'event then
       COUNTER<=COUNTER+1;
   end if;
end process;
   
process(GCLK)     ----扫描
begin
   if  GCLK='1' and GCLK'event then
          REFRESH<=NOT(REFRESH);
   end if;
end process;

process(CLK1)    ;个位借位
begin
  if  CLK1='0' and CLK1'event then
     if BCD2>0 then
        BCD2<= BCD2-1;
      elsIF STATE=1 THEN
        BCD2<="0000";
      elsIF STATE=2 THEN
        BCD2<="0011";
      elsIF STATE=3 THEN
        BCD2<="0000";
      ELSE
        BCD2<="0101";
           end if;
   end if;
end process;

PROCESS (STA_F)   ----状态转换
  BEGIN
  IF STA_F='1' AND STA_F'EVENT THEN
         IF STATE<3 THEN
         STATE<=STATE+1;
         ELSE
         STATE<="00" ;
         END IF;
     END IF ;
END PROCESS;
process(S1)       ---装入计时值
begin
      if RESET='1' then
                  BCD1<="0000;
       ELSif  S1='0' AND S1'EVENT  then
           IF STOP='0' THEN
             if BCD1>0 then
                  BCD1<= BCD1-1;
               ELSIF STA_F='1'    THEN
                  CASE STATE IS
                  WHEN "01"=> BCD1<="0101"; ---5
                  WHEN "10"=> BCD1<="0101";---39
                  WHEN "11"=> BCD1<="0101";--5
                  WHEN OTHERS=> BCD1<="1001";--59
                  END CASE;
                  ELSE
                  BCD1<="1001";
                end if;
            end if;
          END IF;
end process;

BCDOUT<=            ---BCD转换为显示码
   "0000110" when(BCD=1) else
   "1011011" when(BCD=2) else
    "1001111" when(BCD=3 ) else
     "1100110" when(BCD=4 ) else
     "1101101" when(BCD=5) else
     "1111101" when(BCD=6) else
     "0000111" when(BCD=7) else
     "1111111" when(BCD=8) else
     "1101111" when(BCD=9) else
     "0111111";
                        
BCD<=BCD2 when(REFRESH='1') else     ---段扫描
     BCD1;
   
DIG_SEL<="01"  when(REFRESH='1') else  ---位扫描
      "10";
CLK1<='1' when BCD1=0 else        ---产生借位信号
'0';
BEEP<=CLK_OUT  when (BCD2=0 and BCD1=3) else
'0';                             -----报警
STA_F<='1' WHEN (BCD2=0  AND BCD1=0) ELSE
     '0';                        ----产生状态转换信号
LED<=                         ----红、黄、绿灯点亮
   "00111111" when(STATE="00") else
   "11001111" when(STATE="01") else
    "11110011" when(STATE="10") else
     "11001111" when(STATE="11") else
      "00111100";

DP<=not CLK_OUT when(REFRESH='0') else
'0';                     ----小数点点亮
end traffic;


我来回答
回答0个
时间排序
认可量排序
易百纳技术社区暂无数据
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区