My title page contents

交通定时控制电路设计VHDL代码Quartus仿真

名称:交通定时控制电路设计VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

交通定时控制电路设计

1)基本要求:

首先设定100以内的交通信号灯十进制计时秒数,而后每来一次秒脉冲降沿,秒数减1,减到0,电路回复设定值重新计时。

2)端口定义:

输入32KHz时钟端口clk,输入端口个位FQ3 downto0),十位sQ(3 downto0),置数端S;输出端口个位FLED(7 downto0),十位SLED(7 downto0)。

3)实现思路

(1)电路原理:

秒计数可分为个位与十位分别计算,个位减到0回9,十位减一;减至0,计时结束(2)1Hz秒脉冲电路参考基础电路程序设计。

(3)秒计时电路

定义信号FD(3 downto0),SD(3 downto0)暂存秒数的个位值与秒数的十位值:定义变量iFD(3 downto0),iSD(3 downto0)暂存秒数的个位值FD与秒数的十位值SDLGTP: Process(ck1s, SQ, FQ)    -100S timer

VARIABLE IFD, ISD: STD LOGIC_ VECTOR(3 downto 0): =X"O

Begin

IF S='1' then ISD<=SQ; IFD<=FQ

ELSIF ck1s'event AND cks='0' then

IF IFD="0000" then    -When FD is decreased to O(in Decimal

F ISD="0000" then    -when SD is decreased to 0 (in Decimal

ISD<=SQ; IFD<=FQ;

ELSE

iSD<=iSD-1;iFD<="1001”;

END IF

ELSE

FD<=IFD-1

END IF

END IF

SD<=ISD: FD<=IFD

End Process LGTP:

(4)时间值FD、SD采用8段LED显示,显示电路程序参考基础电路的数码管译码电路。

要求2.jpg

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com


演示视频:

设计文档:

设计文档.doc

1. 工程文件

Quartus9.0版本


2. 程序文件


3. 程序编译


4. 管脚图


5. RTL图


6. 仿真图


上图中,可以看到数码管十位显示6F,个位显示6F->7F->07->7D->6D->66->4F ......根据数码管译码表可知,数码管倒计时显示的是99->98->97->96->95->94->93.......显示正确。


部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
   USE ieee.std_logic_unsigned.all;
--交通定时控制
ENTITY traffic_time IS
   PORT (
      clk :IN STD_LOGIC;--时钟端口
      S  :IN STD_LOGIC;--置数端
      FQ  :IN STD_LOGIC_VECTOR(3 DOWNTO 0);--输入端口个位
      SQ  :IN STD_LOGIC_VECTOR(3 DOWNTO 0);--输入端口十位 
      SLED  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--输出十位显示端口
      FLED  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--端口个位
   );
END traffic_time;
ARCHITECTURE behave OF traffic_time IS
   --定义信号
   SIGNAL SD:STD_LOGIC_VECTOR(3 downto 0);
   SIGNAL FD:STD_LOGIC_VECTOR(3 downto 0);
   SIGNAL ck1s: STD_LOGIC:='0';--1Hz
   SIGNAL iFD: STD_LOGIC_VECTOR(3 downto 0);
   SIGNAL iSD: STD_LOGIC_VECTOR(3 downto 0);
BEGIN
--分频到1Hz
ck1sP:Process(clk) --Process to generate 1Hz clock
 Variable tmp: INTEGER RANGE 0 to 15999:=0;
Begin
If clk'EVENT AND clk='0' then
If tmp=159 then --为便于仿真将15999改小为159
tmp:=0;
ck1s<=NOT(ck1s);
Else
tmp:= tmp+1;
END IF;
 END IF;
End Process ck1sP;
LGTP: Process(ck1s,S) --100S timer
Begin
IF S='1' then 
iSD<=SQ;--十位
iFD<=FQ;--个位
ELSIF ck1s'EVENT AND ck1s='0' then
 IF iFD="0000" then --when FD is decreased to 0(in Decimal)
 IF iSD="0000" then --when SD is decreased to 0 (in Decimal)
iSD<="1001"; iFD<="1001";
 ELSE
iSD<=iSD-"0001"; iFD<="1001";
 END IF;
  ELSE
 iFD<=iFD-"0001";
  END IF;
 END IF;
  SD<=iSD; FD<=iFD; 
End Process LGTP;
--数码管译码电路显示十位
SLED<=  X"3F" WHEN SD="0000" ELSE--"0"
X"06" WHEN SD="0001" ELSE--"1"
X"5B" WHEN SD="0010" ELSE--"2"
X"4F" WHEN SD="0011" ELSE--"3"
X"66" WHEN SD="0100" ELSE--"4"
X"6D" WHEN SD="0101" ELSE--"5"
X"7D" WHEN SD="0110" ELSE--"6"
X"07" WHEN SD="0111" ELSE--"7"
X"7F" WHEN SD="1000" ELSE--"8"
X"6F" WHEN SD="1001" ELSE--"9"
X"00";--light off

代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 交通定时控制电路设计VHDL代码Quartus仿真

发表评论

模板文件不存在: ./template/plugins/comment/pc/index.htm

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员