

图7 控制模块实体说明
Fig 7 Entity discription of the controller
4.2.4 实现算法
通过控制器模块功能描述可以得出控制模块基本流程。控制器模块进程基本流程图如图8所示。
图8 控制模块进程
Fig 8 Process of the controller block
4.2.5 元件符号图
根据进程的算法流程图,我们容易编写对应的VHDL代码,把编写好的VHDL代码在Quartus II平台上运行,进行编译。编译成功之后,建立控制模块的符号元件,得到的控制模块的元件符号图如图9所示。
图9 控制模块的元件符号图
Fig 9 Component symbol diagram of the controller block
4.2.6 仿真
控制模块的仿真:当RESET起始状态设为高电平时,状态STATE转为S0。CLK为1HZ并且在上升沿时改变STATE的状态,即在S0,S1,S2,S3中循环转换。当HOLD为高电平时为特殊情况,RA,RB都为高电平。仿真结果与预设功能相符,仿真图如图10所示。
图10控制模块的仿真图
Fig 10 Simulatiom diagram of The controller
4.3 分位模块的设计
4.3.1 分位模块功能描述
分位模块主要功能是把输入信号NUMIN分为倒计时间的十位NUM10和个位NUM1。当NUMIN大于20时,十位NUM10赋值为2,个位NUM1则等于NUMIN减去20;当NUMIN大于10时,十位NUM10赋值为1,个位NUM1则等于NUMIN减去10;当NUMIN小于10时,十位NUM10赋值为0,个位NUM1则等于NUMIN。
4.3.2 输入/输出信号说明
根据分位模块功能描述和总体框图,得到分位模块的输入/输出信号,对输入输出信号的详细说明如下:
输入端口说明:
NUMIN:倒计时输入端口。为交通信号灯亮灯倒计时间。NUMIN采用INTEGER来表示并将其范围限制为0到25,用VHDL语句定义为:NUMIN:IN INTEGER RANGE 0 TO 25。
输出端口说明:
NUM10:时间输出端口。为交通信号灯一方向倒计时间的十位。NUM10采用INTEGER来表示并将其范围限制为0到2,用VHDL语句定义为:NUM10:OUT INTEGER RANGE 0 TO 2。
NUM1:时间输出端口。为交通信号灯一方向倒计时间的个位。NUM1采用INTEGER来表示并将其范围限制为0到9,用VHDL语句定义为:NUM1:OUT INTEGER RANGE 0 TO 9。
4.3.3 实体说明
根据分位模块功能描述和总体框图的输入/输出信号,容易得到分位模块的实体说明,实体说明图如图11所示。
图11 分位模块实体说明
Fig 11 Entity discription of the dividing figure
4.3.4 实现算法
通过分位模块的功能描述可以得出分位模块的基本流程。分位模块进程基本流程图如图12所示。
图12 分位模块进程
Fig 12 Process of the dividing figure
4.3.5 元件符号图
根据各进程的算法流程图,我们容易编写对应的VHDL代码,把编写好的VHDL代码在Quartus II平台上运行,进行编译。编译成功之后,建立分位模块的符号元件,得到的分位模块的元件符号图如图13所示。
图13 分位模块的元件符号图
Fig 13 Component symbol diagram of the dividing figure block
4.3.6 仿真
分位模块的仿真:由控制模块向分位模块输入数据后,分位模块会将数据分为十位和个位,十位范围为0到2,个位范围为0到9。仿真图结果与预计功能相符合。仿真图如图14所示。
图14 分位模块的仿真图
Fig 14 Simulation diagram of t the dividing figure
4.4 译码模块的设计
4.4.1 译码模块功能描述
译码模块主要功能是在CLK3为1KHZ上升沿扫描下,将输入信号NUMA10,NUMA1,NUMB10,NUMB1由INTEGER转换为STD_LOGIC_VECTOR(7 DOWNTO 0),每一位都与数码相应显示对应,并设置好选位信号DOUT8,数码管将轮流扫描NUMA10,NUMA1,NUMB10,NUMB1并显示。
4.4.2 输入/输出信号说明
根据译码模块功能描述和总体框图,得到译码模块的输入/输出信号,对输入输出信号的详细说明如下:
输入端口说明:
CLK3:系统基准时钟信号,频率为1KHZ。主要是扫描数码管。CLK3采用1位2进制来表示,用VHDL定义为CLK3:INT SDT_LOGIC。
NUMA10,NUMB10:输入信号。分别表示A,B方向的倒计时间十位上的数字。
NUMA10,NUMB10采用INTEGER来表示并将其范围限制为0到2,用VHDL语句定义为:NUMA10,NUMB10:IN INTEGER RANGE 0 TO 2。转贴于 酷文网-论文下载中心 http://www.coolwen.net