[Home] [Dice] [BCD to 7 Segm] [Mux Display] [Bcd Counter] [Toggle Button] [StopWatch] [Conversions] [RPN Calculator] [The Gnome II] [74x382 ALU (8-bit)] [ Up ]

Create an 8-bit version of the 74x382 ALU

•   The bit-file with my solution can be downloaded here for test - for the BASYS-kit use:  Input_unit_BASYS.bit

•                                                                                                      for the NEXYS-kit use:  Input_unit_NEXYS.bit

•   The user constrain file for BASYS and NEXYS (use comment/uncomment):  VHD - Save as UCF help here.

This code makes it easy to verify the functionality of the ALU  -- "How to use" -- Download the .bit file to your kit and try:

1) If the leftmost Dp and Dig1:0 (the rightmost) flashes
does it mean that you can define A(7:0) with the Sw(7:0)
Press <Btn1> in order to update => A = Dig1:0 = Dig3:2

2) Press <Btn0> in order to change input "Valg"

3) If the next leftmost Dp and Dig1:0 (the rightmost) flashes
does it mean that you can define B(7:0) with the Sw(7:0)
Press <Btn1> in order to update => B = Dig1:0 = Dig3:2

4) Press <Btn0> again in order to change "Valg" for arithmetic

5) When Dig3 flashes for arithmetic mode.
Use <Btn3> and <Btn2> to select S = 0..7
Use <Btn1> to toggle the Cin (watch Dp0)

6) Press <Btn0> to start the process of watch/change A,B

Last updated: 22-02-09

 Function table for the ALU_DESIGN S2 S1 S0 Function Cout 0   0   0 F = 0000 0 0   0   1 F = B - A - 1 + Cin F(8) 0   1   0 F = A - B - 1 + Cin F(8) 0   1   1 F = A + B  + Cin F(8) 1   0   0 F = A xor B not Cin 1   0   1 F = A or B Cin 1   1   0 F = A and B Cin 1   1   1 F = 1111 1

 The VHDL code for Input_Unit can be found here:  Input_unit.vhd Please note! You doesn't have to understand the code below in order to solve the task. The purpose of this function will be the switch among the various data for display. Please note how "Valg" used. The Clk_1Hz can be used for the Flashing effect. This signal will be 0 for say 500 msec and 1 for 500 msec. The Blanking bits do the trick. The basic idea in this process is the implementation of a debouche functionality and the ability of edge-detection of more the on input. This makes it possible to increment, decrement and load values at the same variables/signals.

 The VHDL code for Mux_Display_ver5e can be found here:  Muxdisplay_ver5e.vhd Please note! You doesn't have to understand the code below in order to solve the task.

 The hint VHDL code for ALU_Design can be found here:  ALU_Design.vhd

 This how it's done in 9.2i - The text editor chosen automatically in 10.1i Mark a field of text and use the Comment / Uncomment commands