??? 09/02/07 00:36 Read: times |
#143877 - Not so fast, there, Pilgrim ... Responding to: ???'s previous message |
Jan Waclawek said:
I am happy with the "simple" way of resetting at the moment, and implementation issues (i.e. gate count per bit of PC and similar) are not of my immediate concern; but will keep the LJMP somewhere back in my head. Keep in mind, please, that it's just as easy to set as it is to reset a bit. To be honest, when I wrote about sparing down the routing of reset signal I really did not realize the SFRs need to be reset too. Nevertheless, there is an alternative method - and this really relates to the "fake LJMP" issue - to start up after reset in an internal, for the user invisible, ROM, running a short program from there which would then reset the required SFRs (or at least those of them which are not fatal to the overall operation during this "bootup"). For the user, this means a few cycles of delay after reset starts (or ends?) until the user code starts to run. Back in the bit-slice days, this was done all the time. Routing the global reset is a pretty important feature that is well supported in most programmable logic. Clearly, the impact of RESET is more than just to force the core into an execution of LJMP 0000H. The RESET signal has lots of important things to do, all of which are achievable using a discrete preset or clear of the affected register/hardware bits. This is an approach which really spares some routing and also a few gates.
This is not a new idea; in fact, I am quite convinced that many of you (yes, including Richard) already came across a '51 derivative doing exactly this. Lynn's remark about "reset being an NMI" indicates something at least very similar. JW I'm not sure how that last concept relates to Lynn's comment, particularly in light of the RESET timing. Keep in mind, the minimal duration of RESET is two system clock cycles. That seems to me to be long enough to do what I previously described, and to repeat it until reset goes away, and really little more. Once that timing requirement has been satisfied, no further guarantees are required. The core accepts, synchronizes, and executes the reset strobe until it's gone. Whether it goes away in 0 additional cycles or 100K, doesn't seem to matter. The logic I suggested meets this requirement and would exhibit that behavior. If you want to generate hardware, or a simulation of it, that approximates, and therefore teaches you about, the 805x core, then you have to consider such things. Certainly there's no law forcing you to do things that way, but you should, perhaps, keep in mind that CPU design ultimately ends up as a matter of silicon by the pound, as that's what the original designers had to consider. RE |