基于VHDL跑马灯课程设计

ROM的5根输入线对应着五位二进制数,由高位到低位为EDCBA。

前两位E,D分配给由两个JK触发器组成的二位加法计数器的输出端。在手动输入时钟沿的状态下。ED在00,01,10,11四种状态循环转换。

后三位C,B,A分配给74LS293的三个输出端DCB。在时钟控制下,DCB在000,001,010,011,100,101,110,111八个状态循环。 ROM的地址线读取如下表所示: 模式一(0-7) 二(8-15) 三(16-23) 四(24-31) ROM EDBCA EDBCA EDBCA EDBCA 00000 01000 10000 11000 00001 01001 10001 11001 00010 01010 10010 11010 数00011 01011 10011 11011 据输00100 01100 10100 11100 入00101 01101 10101 11101 00110 01110 10110 11110 00111 01111 10111 11111 表一——读取数据

输入ROM的五位数及对应的输出 00000 01111111 00001 10111111 00010 11011111 00011 11101111 00100 11110111 00101 11111011 00110 11111101 00111 11111110 01000 11111110 01001 11111101 01010 11111011 01011 11110111 01100 11101111 01101 11011111 01110 10111111 01111 01111111 10000 11100111 10001 11011011 10010 10111101 10011 01111110 10100 11100111 10101 11011011 10110 10111101 10111 01111110 11000 01111110

5

11001 11010 11011 11100 11101 11110 11111 表二——数据输出

10111101 11011011 11100111 01111110 10111101 11011011 11100111 (5) 74LS283与7446组成模式显示电路:

图十一——显示电路

此电路在切换模式的同时,在七段数码管上显示1234,标明模式。 74LS283功能表: 输入 输出 B1 B2B3B4 A4A3 A2A1 SUM1-SUM4 1 000 00 00 0001 1 000 00 01 0010 1 000 00 10 0011 1 000 00 11 0100 表三——74LS283功能表

74LS283功能:

如上图:74LS283实现的是对输入进行加法运算,以二进制形式输出结果 A4A3B4B3B2全部接地。B1接高电平。A2A1在00 01 10 11四种状态切换。这样输出相应结果为:0001 0010 0011 0100.其结果加在7446输入端,输出连接七段数码管。

74LS283的程序如下:

TITLE \file for the 74283 macrofunction. Chooses a device-family optimized implementation.\FUNCTION p74283 (a[4..1], b[4..1], cin) RETURNS (cout, sum[4..1]);

FUNCTION f74283 (a[4..1], b[4..1], cin) RETURNS (cout, sum[4..1]);

PARAMETERS (

DEVICE_FAMILY

6

);

INCLUDE \

SUBDESIGN 74283 (

a[4..1] : INPUT = GND; b[4..1] : INPUT = GND; cin : INPUT = GND; cout : OUTPUT; sum[4..1] : OUTPUT; )

VARIABLE

IF (FAMILY_FLEX() == 1) GENERATE sub : f74283; ELSE GENERATE

sub : p74283; END GENERATE;

BEGIN

IF (USED(a1)) GENERATE sub.a1 = a1; END GENERATE;

IF (USED(a2)) GENERATE sub.a2 = a2; END GENERATE;

IF (USED(a3)) GENERATE sub.a3 = a3; END GENERATE;

IF (USED(a4)) GENERATE sub.a4 = a4; END GENERATE;

IF (USED(b1)) GENERATE sub.b1 = b1; END GENERATE;

IF (USED(b2)) GENERATE sub.b2 = b2; END GENERATE;

IF (USED(b3)) GENERATE sub.b3 = b3; END GENERATE;

IF (USED(b4)) GENERATE sub.b4 = b4; END GENERATE;

7

IF (USED(cin)) GENERATE sub.cin = cin; END GENERATE; cout = sub.cout;

sum[4..1] = sub.sum[4..1]; END;

注:由于该模块取自Quaetus本身的控件箱。所以不给出仿真波形。 7446内部结构图:

图十二——7446内部结构图

五. 总体设计电路

8

图十三——总体设计电路

9

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4