1、本科课程设计报告课程名称: EDA 计数与 FPGA 应用设计 设计题目: 交通灯控制器 实验地点: 跨越机房 专业班级: 电信 0901 学号: 2009001249 学生姓名: 赵岩 指导教师: 张文爱 年 月 日设计一:三位十进制计数显示器一、 设计目的:1、 掌握时序电路中多进程的 VHDL 的描述方法。2、 掌握层次化设计方法。3、熟悉 EDA 的仿真分析和硬件测试技术。二、设计原理三位十进制计数显示器分三部分完成,先设计十进制计数电路,再设计显示译码电路,最后设计一个顶层文件将两者连接起来。三源程序1、 三位十进制计数器的三位分三个进程描述,含有同步清 0 信号 RESET和计数使
2、能控制信号 CINLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COU3 ISPORT(CLK,RESET,CIN:IN STD_LOGIC;CO:OUT STD_LOGIC;A,B,C:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END COU3 ;ARCHITECTURE ART OF COU3 IS SIGNAL AP,BP,CP:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINKK1:PROCESS(CLK) BEGINIF (C
3、LKEVENT AND CLK=1) THENIF (RESET=0) THENAPYIMAYIMAYIMAYIMAYIMAYIMAYIMAYIMAYIMAYIMAYIMAMRMRMRMRDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOU
4、T45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUT45MDOUNT25BDOUNT25BDOUNT25BDOUNT25BDOUNT25BDOUNT25BDOUNT25BDOUNT25BDOUNT25BDOUNT25BDOUNT25BDOUNT25BDOUNT25BDOUNT25BDOUNT25BDOUNT25BDOUNT25BDOUNT25BDOUNT25BDOUNT25BDOUNT25BDOUNT25BDOUNT25B
5、DOUNT25BDOUNT25BDOUNT25BDOUT5DOUT5DOUT5DOUT5DOUT5DOUT5YIMAYIMAYIMAYIMAYIMAYIMAYIMAYIMAYIMAYIMAYIMAYIMAYIMAYIMAYIMAYIMANULL;END CASE;END PROCESS;END ART;整体组装和测试自动转换出来的源程序:LIBRARY ieee;USE ieee.std_logic_1164.all; LIBRARY work;ENTITY Block1 IS port( CLK : IN STD_LOGIC;SM : IN STD_LOGIC;SB : IN STD_LOG
6、IC;MR : OUT STD_LOGIC;MY : OUT STD_LOGIC;MG : OUT STD_LOGIC;BR : OUT STD_LOGIC;BY : OUT STD_LOGIC;BG : OUT STD_LOGIC;DOUT1 : OUT STD_LOGIC_VECTOR(7 downto 0);DOUT2 : OUT STD_LOGIC_VECTOR(7 downto 0);END Block1;ARCHITECTURE bdf_type OF Block1 IS component cnt05sPORT(CLK : IN STD_LOGIC;EN05M : IN STD_
7、LOGIC;EN05B : IN STD_LOGIC;DOUT5 : OUT STD_LOGIC_VECTOR(7 downto 0) );end component;component cnt25sPORT(SB : IN STD_LOGIC;SM : IN STD_LOGIC;CLK : IN STD_LOGIC;EN25 : IN STD_LOGIC;DOUT25B : OUT STD_LOGIC_VECTOR(7 downto 0);DOUT25M : OUT STD_LOGIC_VECTOR(7 downto 0);end component;component cnt45sPORT
8、(SB : IN STD_LOGIC;CLK : IN STD_LOGIC;EN45 : IN STD_LOGIC;DOUT45B : OUT STD_LOGIC_VECTOR(7 downto 0);DOUT45M : OUT STD_LOGIC_VECTOR(7 downto 0);end component;component jtdkzPORT(CLK : IN STD_LOGIC;SM : IN STD_LOGIC;SB : IN STD_LOGIC;MR : OUT STD_LOGIC;MY0 : OUT STD_LOGIC;MG0 : OUT STD_LOGIC;BR : OUT
9、 STD_LOGIC;BY0 : OUT STD_LOGIC;BG0 : OUT STD_LOGIC);end component;component xskzPORT(EN45 : IN STD_LOGIC;EN25 : IN STD_LOGIC;EN05M : IN STD_LOGIC;EN05B : IN STD_LOGIC;AIN05 : IN STD_LOGIC_VECTOR(7 downto 0);AIN25B : IN STD_LOGIC_VECTOR(7 downto 0);AIN25M : IN STD_LOGIC_VECTOR(7 downto 0);AIN45B : IN
10、 STD_LOGIC_VECTOR(7 downto 0);AIN45M : IN STD_LOGIC_VECTOR(7 downto 0);DOUTB : OUT STD_LOGIC_VECTOR(7 downto 0);DOUTM : OUT STD_LOGIC_VECTOR(7 downto 0) );end component;signal SYNTHESIZED_WIRE_13 : STD_LOGIC;signal SYNTHESIZED_WIRE_14 : STD_LOGIC;signal SYNTHESIZED_WIRE_15 : STD_LOGIC;signal SYNTHES
11、IZED_WIRE_16 : STD_LOGIC;signal SYNTHESIZED_WIRE_8 : STD_LOGIC_VECTOR(7 downto 0);signal SYNTHESIZED_WIRE_9 : STD_LOGIC_VECTOR(7 downto 0);signal SYNTHESIZED_WIRE_10 : STD_LOGIC_VECTOR(7 downto 0);signal SYNTHESIZED_WIRE_11 : STD_LOGIC_VECTOR(7 downto 0);signal SYNTHESIZED_WIRE_12 : STD_LOGIC_VECTOR
12、(7 downto 0);BEGIN MY CLK,EN05M = SYNTHESIZED_WIRE_13,EN05B = SYNTHESIZED_WIRE_14,DOUT5 = SYNTHESIZED_WIRE_8);b2v_inst1 : cnt25sPORT MAP(SB = SB,SM = SM,CLK = CLK,EN25 = SYNTHESIZED_WIRE_15,DOUT25B = SYNTHESIZED_WIRE_9,DOUT25M = SYNTHESIZED_WIRE_10);b2v_inst2 : cnt45sPORT MAP(SB = SB,CLK = CLK,EN45
13、= SYNTHESIZED_WIRE_16,DOUT45B = SYNTHESIZED_WIRE_11,DOUT45M = SYNTHESIZED_WIRE_12);b2v_inst3 : jtdkzPORT MAP(CLK = CLK,SM = SM,SB = SB,MR = MR,MY0 = SYNTHESIZED_WIRE_13,MG0 = SYNTHESIZED_WIRE_16,BR = BR,BY0 = SYNTHESIZED_WIRE_14,BG0 = SYNTHESIZED_WIRE_15);b2v_inst4 : xskzPORT MAP(EN45 = SYNTHESIZED_
14、WIRE_16,EN25 = SYNTHESIZED_WIRE_15,EN05M = SYNTHESIZED_WIRE_13,EN05B = SYNTHESIZED_WIRE_14,AIN05 = SYNTHESIZED_WIRE_8,AIN25B = SYNTHESIZED_WIRE_9,AIN25M = SYNTHESIZED_WIRE_10,AIN45B = SYNTHESIZED_WIRE_11,AIN45M = SYNTHESIZED_WIRE_12,DOUTB = DOUT2,DOUTM = DOUT1);END;功能说明:1.主、支干道各设有一个绿、黄、红指示灯,两个显示数码管。
15、2.主干道绿灯处于常亮状态,两支干道有车来才亮绿灯。3.当主、支干道有车时,两者交替通行,主干道绿灯每次亮 45S,支干道绿灯每次亮 25S,在每次由亮绿灯变成亮红灯转换过程中,亮 5S 黄灯作为过渡,并进行减计时显示。4.按键 8 和按键 5 分别控制主、支干道的传感器信号,灯 8 灯 6 显示支干道的红绿灯,灯 4 到灯 2 显示主干道的红绿灯。总体波形四、结论在主干道有车,支干道无车时候倒计时完后主干道数码管显示会停止在绿灯 0S,支干道会停止在红灯 0S,从而主干道常通,支干道有车后才开始倒计时;主干道和支干道都没车时数码管显示也停止在 0S,这样的显示节省软件资源。在设计中使用了 6 个模块,程序简明清晰。五、设计心得通过这次课程设计,我对 EDA 的设计步骤及注意事项有了进一步的了解,同时也学会了如何正确使用 VHDL 设计语言,虽然交通灯控制系统已经很常见了,但真正让我们自己动手设计一个简单的系统,我们才深刻体会到任何一个看似简单的东西,里面往往存在着我们容易的忽略的东西。因此,这次课程设计我学到了很多东西,不仅仅是关于 EDA 这门课程的。