T
Tim
Guest
Hi there
I like to realize a counter, which has an UP and DOWN (and others).
I know, I need a clock for realizing asynchronious reset.
UP and DOWN are triggered by user switches. But I just found a
possiblity for realisation by using an extra Clock-Button - that's a
pretty bad solution!
Can somebody help me and tell me what to change in my ABEL-Code, so I
don't need the Clock-Button??
I use this code
MODULE unicnt
title '6 bit universal counter with parallel load' ;
"constants
X,C,Z = .X., .C., .Z. ;
"inputs
D5..D0 pin ; "Data inputs, 4 bits wide
clk pin ; "Clock input
rst pin ; "Asynchronous reset
cnten pin ; "Count enable
ld pin ; "Load counter with input data value
up pin ; "Up/Down selector: HIGH selects up
down pin;
"outputs
q5..q0 pin istype 'reg'; "Counter outputs
"sets
data = [D5..D0]; "Data set
count = [q5..q0]; "Counter set
"mode equations
MODE = [cnten,ld,up,down]; "Mode set composed of control pins.
LOAD = (MODE == [ X , 1, X, X ]);"Various modes are defined by
HOLD = (MODE == [ 0 , 0, X, X ]);"values applied to control pins.
UP = (MODE == [ 1 , 0, 1, 0 ]);"Symbolic name may be defined as
DOWN = (MODE == [ 1 , 0, 0, 1 ]);"a set equated to a value.
equations
when LOAD then count := data "Load counter with data
else when UP then count := count + 1 "Count up
else when DOWN then count := count - 1 "Count down
else when HOLD then count := count "Hold count
else count := count;
count.clk = clk;
"Counter clock input
count.ar = rst; "Counter reset input
END
Thanks
Tim
I like to realize a counter, which has an UP and DOWN (and others).
I know, I need a clock for realizing asynchronious reset.
UP and DOWN are triggered by user switches. But I just found a
possiblity for realisation by using an extra Clock-Button - that's a
pretty bad solution!
Can somebody help me and tell me what to change in my ABEL-Code, so I
don't need the Clock-Button??
I use this code
MODULE unicnt
title '6 bit universal counter with parallel load' ;
"constants
X,C,Z = .X., .C., .Z. ;
"inputs
D5..D0 pin ; "Data inputs, 4 bits wide
clk pin ; "Clock input
rst pin ; "Asynchronous reset
cnten pin ; "Count enable
ld pin ; "Load counter with input data value
up pin ; "Up/Down selector: HIGH selects up
down pin;
"outputs
q5..q0 pin istype 'reg'; "Counter outputs
"sets
data = [D5..D0]; "Data set
count = [q5..q0]; "Counter set
"mode equations
MODE = [cnten,ld,up,down]; "Mode set composed of control pins.
LOAD = (MODE == [ X , 1, X, X ]);"Various modes are defined by
HOLD = (MODE == [ 0 , 0, X, X ]);"values applied to control pins.
UP = (MODE == [ 1 , 0, 1, 0 ]);"Symbolic name may be defined as
DOWN = (MODE == [ 1 , 0, 0, 1 ]);"a set equated to a value.
equations
when LOAD then count := data "Load counter with data
else when UP then count := count + 1 "Count up
else when DOWN then count := count - 1 "Count down
else when HOLD then count := count "Hold count
else count := count;
count.clk = clk;
"Counter clock input
count.ar = rst; "Counter reset input
END
Thanks
Tim