What is ALE? Explain the functions of ALE in 8085.
Answers were Sorted based on User's Feedback
ALE is a control signal of 8085 MPU.8085 is a 8-bit
microprocessor which have 16-bit address bus among them
lower 8-bit are multiplexed.So while MPU executes read or
write operation it needs to demultiplexed.ALE control signal
used to demultiplexed the lower order address and data bus.
Is This Answer Correct ? | 363 Yes | 52 No |
Answer / k. k. ghosh
8085 processor has 16 address lines for 16 bit address of a
memory location. Out of this 16 address lines 8 adress
lines are solely dedicated to transfer 8 higher order
address bits while the remaining lower order 8 bits of the
address are sent through another 8 lines multiplexed with
the 8 bit data lines. It is the control signal ALE to be
sent by the processor in appropriate time to indicate the
operation of this 8 bit multiplexed bus whether it will be
used to send the lower order 8 address bits or to send the
8 data bits. How it is indicated ? Making ALE control HIGH
the multiplexed 8 bit bus will act as address bus while
making ALE control LOW the same 8 bit multiplexed bus will
act as data bus. Thus, ALE = 1 makes the address latched
i.e. latch enable and ALE = 0 makes the adress bus disable
but making it data bus enable. In this sense, this 8 bit
bus better should be said as data bus.
Is This Answer Correct ? | 245 Yes | 22 No |
Answer / geo
address latch enable...in the case of microcontroller (8051)
& microprocessor 8085 the data line & low order 8 bit
address lines are multiplexed.in order to geting address
from this line we uses a latch.ALE is the line connected to
this latch saying that the take the address from the line.
NB: this is used only when we connecting our micro
controller to external mem.
Is This Answer Correct ? | 165 Yes | 56 No |
Answer / gagan deep singh taneja
it is an output status signal.it tells that when data is
present and when address is present on the multiplexed
address/data lines.
when ALE=1(it means address is present)
when ALE=0(it means data is present on multiplexed A/D
lines)
Is This Answer Correct ? | 62 Yes | 8 No |
Answer / abhinandan
ALE is used to indicate the beginning of any operation.it is
a positive going pulse used primarily to latch lower order
address from multiplexed bus(AD0-AD7)and generate seperate
set of eight address lines A0-A7.
Is This Answer Correct ? | 50 Yes | 17 No |
Answer / vini
address latch enable.ALE+latch=demultiplexer circuit used
to demultiplex address and data lines.the lower order
address byte is saved in latch which is enabled by ALE.
Is This Answer Correct ? | 50 Yes | 23 No |
Answer / aparna das
ALE stands for address latch enable.this is a positive
going pulse every time when the 8085 microprocessor is in
operation.it indicates the bits on AD0-AD7 are address
bits.this signal is used to latch the lower order address
from the multiplexed bus,and generates separate set of 8-
address lines A0-A7.
Is This Answer Correct ? | 32 Yes | 13 No |
Answer / santhoshi
ALE stands for "address latch enable"
8085 is a 8 bit microprocessor with 16 address lines.
Among those 16 address lines lower order address lines are
multiplexed with the 8 data lines....when this ALE is
enabled it means that address is being flown through those
multiplexed lines and if it is disabled then data will be
flown through the multiplexed lines
Is This Answer Correct ? | 21 Yes | 13 No |
Answer / ma forhad
ALE means Address Latch Enable.
ALE is a control signal of 8085 microprocessor.8085 has 16
bit address bus and lower (A0-A7) address are multiplexed
with data bus (D0-D7) which need to demultiplexed or
separate the data bus and address bus.
That means ALE use for separate the (AD0-AD7) bus to (A0-A7)
bus and (D0-D7) bus.
Is This Answer Correct ? | 9 Yes | 5 No |
Answer / prathima
address latch enable is an output pulse for latching the low byte of the address during access to external memory.
Is This Answer Correct ? | 12 Yes | 11 No |
explain about externally initiated operations
What the sp register does in a program?
Draw a Transmission Gate-based D-Latch?
Define the functions of the dx register.
I have code and test bench however it is not working porperly. Need help to get it working. module fsm(clock,reset,coin,vend,state,change); \\these are the inputs and the outputs. input clock; input reset; input [2:0]coin; output vend; output [2:0]state; output [2:0]change; \\i need to define the registers as change,coin and vend reg vend; reg [2:0]change; wire [2:0]coin; \\my coins are declared as parameters to make reading better. parameter [2:0]NICKEL=3’b001; parameter [2:0]DIME=3’b010; parameter [2:0]NICKEL_DIME=3’b011; parameter [2:0]DIME_DIME=3’b100; parameter [2:0]QUARTER=3’b101; \\MY STATES ARE ALSO PARAMETERS . I DONT WANT TO MAKE YOU READ \\IN MACHINE LANGUAGE parameter [2:0]IDLE=3’b000; parameter [2:0]FIVE=3’b001; parameter [2:0]TEN=3’b010; parameter [2:0]FIFTEEN=3’b011; parameter [2:0]TWENTY=3’b100; parameter [2:0]TWENTYFIVE=3’b101; \\AS ALWAYS THE STATES ARE DEFINED AS REG reg [2:0]state,next_state; \\MY MACHINE WORKS ON STATE AND COIN always @(state or coin) begin next_state=0; \\VERYFIRST NEXT STATE IS GIVEN ZERO case(state) IDLE: case(coin) \\THIS IS THE IDLE STATE NICKEL: next_state=FIVE; DIME: next_state=TEN; QUARTER: next_state=TWENTYFIVE; default: next_state=IDLE; endcase FIVE: case(coin) \\THIS IS THE SECOND STATE NICKEL: next_state=TEN; DIME: next_state=FIFTEEN; QUARTER: next_state=TWENTYFIVE; //change=NICKEL default: next_state=FIVE; endcase TEN: case(coin) \\THIS IS THE THIRD STATE NICKEL: next_state=FIFTEEN; DIME: next_state=TWENTY; QUARTER: next_state=TWENTYFIVE; //change=DIME default: next_state=TEN; endcase FIFTEEN: case(coin) \\THIS IS THE FOURTH STATE NICKEL: next_state=TWENTY; DIME: next_state=TWENTYFIVE; QUARTER: next_state=TWENTYFIVE; //change==NICKEL_DIME default: next_state=FIFTEEN; endcase TWENTY: case(coin) \\THIS IS THE FIFTH STATE NICKEL: next_state=TWENTYFIVE; DIME: next_state=TWENTYFIVE; //change=NICKEL QUARTER: next_state=TWENTYFIVE; //change==DIME_DIME default: next_state=TWENTY; endcase TWENTYFIVE: next_state=IDLE; \\THE NEXT STATE HERE IS THE RESET default : next_state=IDLE; endcase end always @(clock) begin \\WHENEVER I GIVE A RESET I HAVE TO MAKE THE STATE TO IDLE AND VEND TO 1 if(reset) begin state <= IDLE; vend <= 1’b0; // change <= 3’b000; end \\THE CHANGE ALSO HAS TO BECOME NONE else state <= next_state; case (state) \\HERE WE DECIDE THE NEXT STATE \\ALL THE STATES ARE DEFINED HERE AND THE OUTPUT IS ALSO GIVEN IDLE: begin vend <= 1’b0; change <=3’d0; end FIVE: begin vend <= 1’b0; if (coin==QUARTER) change <=NICKEL; else change <=3’d0; TEN: begin vend <= 1’b0; if (coin==QUARTER) change <=DIME; else change <= 3’d0; FIFTEEN : begin vend <= 1’b0; if (coin==QUARTER) change <=NICKEL_DIME; else change TWENTY : begin vend <= 1’b0; if (coin==DIME) change <=NICKEL; else if (coin==QUARTER) TWENTYFIVE : begin vend <= 1’b1; change <=3’d0; end default: state <= IDLE; endcase end endmodule module test; \\THE INPUT IN THE FSM MODULE ARE REG HERE reg clock,reset; reg [2:0]coin; \\THE OUTPUT IN THE FSM MODULE ARE WIRES HERE wire vend; wire [2:0]state; wire [2:0]change; \\THE PARAMETERS AGAIN FOR THE COIN AND STATE parameter [2:0]IDLE=3’b000; parameter [2:0]FIVE=3’b001; parameter [2:0]TEN=3’b010; parameter [2:0]FIFTEEN=3’b011; parameter [2:0]TWENTY=3’b100; parameter [2:0]TWENTYFIVE=3’b101; parameter [2:0]NICKEL=3’b001; parameter [2:0]DIME=3’b010; parameter [2:0]NICKEL_DIME=3’b011; parameter [2:0]DIME_DIME=3’b100; parameter [2:0]QUARTER=3’b101; \\I MONITOR THE TIME,DRINK,RESET,CLOCK,STATE AND CHANGE FOR CHANGES. initial begin $display("Time\tcoin\tdrink\treset\tclock\tstate\tchange"); $monitor("%g\t%b\t%b\t%b\t%b\t%d\t% d",$time,coin,vend,reset,clock,state,change); \\NEW FEATURE: MY MACHINE HAS THE FACILITY TO DUMP VARIABLES SO THAT \\ I CAN VIEW THEM USING A VCD VIEWER. $dumpvars; $dumpfile("file.vcd"); // Dump output file. \\THIS IS WHERE THE COINS ARE ADDED. clock=0; reset=1; \\FIRST LETS RESET THE MACHINE #2 reset=0; coin=NICKEL; \\CHECK FOR STATE 1 #2 reset=1; coin=2’b00; #2 reset=0; coin=DIME; \\RESET AGAIN AND CHECK FOR STATE 2 #2 reset=1; coin=2’b00; #2 reset=0; \\RESET AGAIN AND CHECK FOR STATE 5 coin=QUARTER; #2 reset=1; coin=2’b00; #2 reset=0; \\RESET AGAIN AND CHECK FOR STATE 5 coin=NICKEL; #2 coin=NICKEL; #2 coin=NICKEL; #2 coin=NICKEL; #2 coin=NICKEL; #2 reset=1; coin=2’b00; #2 reset=0; \\RESET AGAIN AND CHECK FOR STATE 5 AND SO ON coin=NICKEL; #2 coin=DIME; #2 coin=DIME; #2 reset=1; coin=2’b00; #2 reset=0; coin=NICKEL; #2 coin=DIME; #2 coin=QUARTER; #2 reset=1; coin=2’b00; #2 reset=0; coin=NICKEL; #2 coin=NICKEL; #2 coin=NICKEL; #2 coin=DIME; #2 reset=1; coin=2’b00; #2 reset=0; coin=NICKEL; #2 coin=NICKEL; #2 coin=NICKEL; #2 coin=NICKEL; #2 coin=DIME; #2 reset=1; coin=2’b00; #2 reset=0; coin=NICKEL; #2 coin=NICKEL; #2 coin=QUARTER; #2 reset=1; coin=2’b00; #2 reset=0; coin=NICKEL; #2 coin=QUARTER; #2 reset=1; coin=2’b00; #2 $finish; end \\THE CLOCK NEEDS TO TICK EVERY 2 TIME UNIT always #1 clock=~clock; //always @(state) // coin=!coin; initial begin if (reset) coin=2’b00; end \\THIS IS WHERE I INSTANTIATE THE MACHINE fsm inst1(clock,reset,coin,vend,state,change); endmodule
how to know weather the controller is 16 bit or 32 bit?
How many bit address bus does the 8085 use?
Why do we use two ground pins in the pin diagram of 8086?
Discuss 3 states signals io/m,s0,s1?
What is an editor?
What is the operating frequency of 8085?
What is the function of ale and how does it works?