Shop OBEX P1 Docs P2 Docs Learn Events
P1 Verilog implementation: Alpha testers required — Parallax Forums

P1 Verilog implementation: Alpha testers required

AleAle Posts: 2,363
edited 2014-04-21 07:06 in Propeller 1
Hei I have a small project in the works, a verilog implementation of the P1 and I'd like some Alpha/Beta testers:

What you need:

just ONE of the following

. Lattice MachXO2 breakout board with MachXO2-7000HE (with extra 40 MHz oscillator, you can solder it to the pads or on the prototyping area)
. Arrow's Bemicro CV (Cyclone V-based)
. Xilinx Spartan3E starter kit (XC3S500E)
. (It may run on a XC3S200 too, I don't know yet, tell me if you have one of these)
and ONE PropPlug

Any takers ?

the code is in github now: https://github.com/raps500/AProp

For the time being you need icarus verilog and GTKWave. Altera/Lattice projects need updating, and a Xilinx project is comming soon too.

Features and Differencies as of 1.04.2014:

All opcodes, except HUB ops are 4 cycles long (MUL for lattice being the exception, still in the works), djnz, tjnz, tjz too.
HUB opcodes are between 7 and 8 for 4 cogs, 1+ cycles for each extra pair of cogs.
HUB memory is implemented as dual-ported memory, faster access. I'll add an external memory interface also coupled to the HUB.
Video circuitry is still missing, you can't reconfigure PLLs on the fly, but some fixed frequencies could be implemented.
Counters are still missing.
PORTA and PORTB are implemented (PORTB can be shut down if needed).
If Cluso agrees, we could use his spin interpreter, I have to test this.
A bootloader is still needed.
There is no hazerd when writting a memory position and fetching from there the next instruction.
Some quick statistics:
           |  Altera     |    Lattice  
-----------+-------------+------------------
Resources  |    1200 ALM |   1300 slices      for each cog (No counters, video)
Frequency  |  80 MHz(-7) |   40 MHz (-4)
HUB Memory |   <=160 kBi |   <= 22 kBi
MUL        |  1 cycle hw |  16 cycles Booth's algo
The CV A2 has 176 kbytes block RAM, you need 16 kbytes for 8 cogs, has hw multipliers.
The MachXO2-7000 has 26 kbytes block RAM. Only 2 cogs fit. Does not have hw multipliers, but booth's algo could be used.
The XC2S500E has 40 kbytes block ram, 4 cogs should fit comfortably there, has hw multipliers.

The cog has a 4 stage pipeline which can be stalled in stage 3 (read/execute) to wait for the HUB or to compare/match (waitxxx).
Fetch (fetch from cog ram)
Decode (decode)
Read (read S & D and precalculate some values used by the ALU)
Write back (D is written)

The code has minimal explicit resource duplication. Some values are pre-computed between decode and read/execute to make a critical path shorter.

I still have a couple of uncommitted updates for mul and for the projects.
«1

Comments

  • TubularTubular Posts: 4,703
    edited 2014-03-20 00:32
    Sure Ale, would be happy to.

    I have a Bemicro CV (and several prop plugs)
  • LeonLeon Posts: 7,620
    edited 2014-03-20 00:49
    I have a BeMicro CV and Prop plug and would be glad to help. I also have a Xilinx Spartan 3 kit (XC3S200) somewhere.
  • mindrobotsmindrobots Posts: 6,506
    edited 2014-03-20 07:43
    I'm in. Not sure how much value I can contribute beyond basic testing.

    I was going to order one, I'll just advance that schedule a bit!
  • AleAle Posts: 2,363
    edited 2014-03-21 00:26
    Sounds great !

    I'll post then some code... I need to do a bit more testing and a bit of pasm coding :).
  • mindrobotsmindrobots Posts: 6,506
    edited 2014-03-21 04:34
    Do we need anything other than the board and their free development software? I see the bemicro has something called an SDK also but I didn't look into its details.

    So you've got an FPGA emulation of a P1 variant?? Sounds exciting!
  • AleAle Posts: 2,363
    edited 2014-03-22 04:10
    mindrobots wrote: »
    So you've got an FPGA emulation of a P1 variant?? Sounds exciting!
    I didn't say that _yet_, but yes I can pack a whole P1 in that FPGA. And it works ! :)
  • doggiedocdoggiedoc Posts: 2,241
    edited 2014-03-22 04:35
    Ale,

    I have an older BASYS board (Xilinx Spartan XC3S100E) - I'm guessing it's not enough. I have, however, been looking for an excuse to get one of the new FPGA boards to get a jump with the P2. :D

    Doc
  • doggiedocdoggiedoc Posts: 2,241
    edited 2014-03-22 04:51
    Looks like the number of Equivalent Logic Cells on the XC3S100e in only 2160. I would venture to say that's not enough.
  • LeonLeon Posts: 7,620
    edited 2014-03-22 05:18
    You could swap the XC3S100e for a larger device.
  • mindrobotsmindrobots Posts: 6,506
    edited 2014-03-22 08:11
    @Ale,

    It doesn't happen to run on the Terasic DE0-Nano too, that would be really cool and pick up a lot of testers for you!! :smile:
  • AleAle Posts: 2,363
    edited 2014-03-22 11:19
    @doggiedoc:

    you could only fit 1 cog in that many LEs.

    I don't have a DE0-nano... I'll publish the code at some point... it needs a bit of work and clean up :)
  • David BetzDavid Betz Posts: 14,516
    edited 2014-03-22 19:12
    Ale wrote: »
    Hei I have a small project in the works and I'd like some Alpha/Beta testers:

    What you need:

    just ONE of the following

    . Lattice MachXO2 breakout board with MachXO2-7000HE (with extra 40 MHz oscillator, you can solder it to the pads or on the prototyping area)
    . Arrow's Bemicro CV (Cyclone V-based)
    . Xilinx Spartan3E starter kit (XC3S500E)
    . (It may run on a XC3S200 too, I don't know yet, tell me if you have one of these)
    and ONE PropPlug

    Any takers ?
    I think I have a Spartan3E starter kit kicking around somewhere. What does this project do anyway? Or is it secret? :-)
  • AleAle Posts: 2,363
    edited 2014-03-23 00:19
    I have to implement cognew :). I am deliberating on how best do it... and what to load. A "hidden" program on addresses 1F4..1FF seems to be the best, one does not need much to copy HUB to COG :).
    It is a FPGA implementation of a P1, it has a couple of enhancements (djnz/tjz/tjnz take 4 cycles, always), MUL&MULS are there too... and PORTB is also there :). The HUB is not yet implemented but the layout is there, I'm taking advantage of dual ported memory to split HUB accesses. I want to implement external memory, too. The demo is not ready yet... I wanted tachyon as demo.. but it needs a couple extra things :), I am working on them.
  • Cluso99Cluso99 Posts: 18,069
    edited 2014-03-23 02:35
    Ale,
    Sounds interesting! I have A Spartan 3A but no time currently :(
  • David BetzDavid Betz Posts: 14,516
    edited 2014-03-23 04:39
    Ale wrote: »
    I have to implement cognew :). I am deliberating on how best do it... and what to load. A "hidden" program on addresses 1F4..1FF seems to be the best, one does not need much to copy HUB to COG :).
    It is a FPGA implementation of a P1, it has a couple of enhancements (djnz/tjz/tjnz take 4 cycles, always), MUL&MULS are there too... and PORTB is also there :). The HUB is not yet implemented but the layout is there, I'm taking advantage of dual ported memory to split HUB accesses. I want to implement external memory, too. The demo is not ready yet... I wanted tachyon as demo.. but it needs a couple extra things :), I am working on them.
    Yeah, I thought that might be that you were up to. Are you going to add hub execution? P2 has gotten so complicated that I'm sure I don't understand it anymore. It might be fun to play with a P1+. If you are making the RTL available then we could all experiment with adding our favorite features. A lean, clean, relatively simple architecture always appeals to me. Let us know how you progress.
  • AleAle Posts: 2,363
    edited 2014-03-28 01:57
    Hello all,

    I've been busy adding the HUB and loading the COG's memory, I ended using a small pasm routine to load from HUB to COG, saves some LUTs but needs a bit more cycles like 160000, a bit less. I'll put the code in github, so everyone can have a look at it... I think the code is quite usable...
  • AleAle Posts: 2,363
    edited 2014-03-30 11:19
    Hei,

    I pushed the project to github. you can check it out at https://github.com/raps500/AProp.
    For the time being, you can try it with icarus verilog, using the scripts in 05_Testbenches. The Lattice and Altera's projects haven't been updated for the HUB, yet.

    If you have questions, comments, please post them here.

    Ale
  • jmgjmg Posts: 15,173
    edited 2014-03-31 16:19
    Ale wrote: »
    If you have questions, comments, please post them here.

    Can you add a quick fit summary (maybe in post #1, updated with releases) of the
    LOGIC Resource used for each target and MHz reached/reported on that target. (maybe with/without MUL? )
    and how much HUB memory is available on each platform.

    How many CLK cycles per opcode ?
  • Dr_AculaDr_Acula Posts: 5,484
    edited 2014-04-03 15:34
    Very interesting work, Ale.

    I've been playing around with FPGAs recently - getting Z80 emulations running on older cyclone II chips http://zx80.netai.net/grant/Multicomp/index.html Looking at the Z80 code and the internal memory of the cyclone series, there would be lots of possibilities. Even down to something like one cog and external ram for the 32k hub.

    That might not seem useful, but consider that many of the things that end up running in cogs (VGA video, serial ports, ethernet, SPI ports, SD cards, keyboard etc) can all be done as blocks of VHDL/Verilog on a FPGA, so you may only need one cog for many applications.
  • Cluso99Cluso99 Posts: 18,069
    edited 2014-04-03 20:04
    See the PII 5W thread now!
    Chip has P1 working on DE0 but not 64KB hub. Plus more!
  • AleAle Posts: 2,363
    edited 2014-04-04 23:04
    5W for the P2 ? and BGA ? I thought they were going like 90 nm and not 180 on the P2. Well, they will solve it :).
    The P1 would fit nicely on the DE0-nano, and could have also both ports!
    I keep working on my P1. HUB ops, I'll push an update today or tomorrow.
  • mindrobotsmindrobots Posts: 6,506
    edited 2014-04-05 08:46
    Ale,

    It sounds like you are moving along nicely. I don't really know anything about Verilog or really even about building the images.

    Is the Altera version that runs on the BeMicro (or anything other than Lattice) build-able and loadable?

    Is there anything we can do to help you along? What I don't know, I can probably learn without blowing up too much stuff! :smile:
  • AleAle Posts: 2,363
    edited 2014-04-05 10:31
    If you want to do something... you could test the NEGxx opcodes, I think that they are reversed in the manual with regard to the real P1. (see please the thread about the instruction exerciser) :).
    I updated the whole project, thus the programming file is also there, ready to download.
  • kuronekokuroneko Posts: 3,623
    edited 2014-04-05 16:19
    Ale wrote: »
    ... the NEGxx opcodes, I think that they are reversed in the manual with regard to the real P1.
    In this particular instance the manual (v1.2) is in fact correct.
  • jmgjmg Posts: 15,173
    edited 2014-04-05 18:27
    Ale wrote: »
    All opcodes, except HUB ops are 4 cycles long (MUL for lattice being the exception, still in the works), djnz, tjnz, tjz too.
    HUB opcodes are between 7 and 8 for 4 cogs, 1+ cycles for each extra pair of cogs.

    I see Chip's P1 is a 2 clock design, which uses the Dual Port memory well on cog opcodes.
    Is it easy to morph from 4 to 2 ?
  • AleAle Posts: 2,363
    edited 2014-04-05 22:19
    Everything is pipelined, so it should be fairly easy to modify. You will lose the possibility to use the next modified instruction (not available in P1 for another 4 clocks), and there will be some latency for opcodes after djnz, tjz and tjnz... but they are in the P1 anyways.

    Kuroneko: I read the manual, I did the test (and checked the code of the test) and they seem to be reversed. DO you have a test I could run ?. In my code they are like in the manual, maybe one of my props is faulty...
  • kuronekokuroneko Posts: 3,623
    edited 2014-04-06 04:33
    Ale wrote: »
    Kuroneko: I read the manual, I did the test (and checked the code of the test) and they seem to be reversed. DO you have a test I could run ?. In my code they are like in the manual, maybe one of my props is faulty...
    No test as such (apart from a Q&D sample which shows me what I need to know).
    PUB null
    
      cognew(@entry, 0)
      
    DAT             org     0
    
    entry           mov     dira, mask
    
    set_z   '       test    $, #0 wz
    set_nz  '       test    $, #1 wz
    [COLOR="#FF8C00"]set_c           test    $, #1 wc[/COLOR]
    set_nc  '       test    $, #0 wc
    
                    [COLOR="#FF8C00"]negc    temp, #5[/COLOR]
    
                    mov     outa, temp
                    rev     outa, #{32-}8
                    waitpne $, #0
    
    mask            long    $00FF0000
    temp            res     1
    
                    fit
    
    With carry set negc will move -5 into temp. Which is effectively what the manual tells me (truth table line 2, source -1, carry set, result 1). What you are looking at is basically:
    neg[cc] temp, #n
    
    which is equivalent to
    mov     temp, #n
    if_[cc] neg     temp, temp
    
  • David BetzDavid Betz Posts: 14,516
    edited 2014-04-06 04:58
    Cluso99 wrote: »
    See the PII 5W thread now!
    Chip has P1 working on DE0 but not 64KB hub. Plus more!
    Chip has a P1 COG running on a DE0-Nano? Where did you see that? The posts have been flying by so fast in the P2 forum that I've only been able to read a fraction of them. Also, do you have your P1 working on either a DE0-Nano or a DE2-115?
  • Cluso99Cluso99 Posts: 18,069
    edited 2014-04-06 06:45
    David, look on the 5W thread from the date/time of my post above, backwards.
  • AleAle Posts: 2,363
    edited 2014-04-06 09:51
    I get the following for NEGC
    NEGC    ---D---- ---S---- ZC = ---Q---- ZC
            00000000 00000000 00 = 00000000 10
            00000000 00000000 10 = 00000000 10
            00000000 00000000 01 = 00000000 10
            00000000 00000000 11 = 00000000 10
            00000001 00000000 00 = 00000000 10
            00000001 00000000 10 = 00000000 10
            00000001 00000000 01 = 00000000 10
            00000001 00000000 11 = 00000000 10
            00000002 00000000 00 = 00000000 10
            00000002 00000000 10 = 00000000 10
            00000002 00000000 01 = 00000000 10
            00000002 00000000 11 = 00000000 10
            7fffffff 00000000 00 = 00000000 10
            7fffffff 00000000 10 = 00000000 10
            7fffffff 00000000 01 = 00000000 10
            7fffffff 00000000 11 = 00000000 10
            80000000 00000000 00 = 00000000 10
            80000000 00000000 10 = 00000000 10
            80000000 00000000 01 = 00000000 10
            80000000 00000000 11 = 00000000 10
            80000001 00000000 00 = 00000000 10
            80000001 00000000 10 = 00000000 10
            80000001 00000000 01 = 00000000 10
            80000001 00000000 11 = 00000000 10
            fffffffe 00000000 00 = 00000000 10
            fffffffe 00000000 10 = 00000000 10
            fffffffe 00000000 01 = 00000000 10
            fffffffe 00000000 11 = 00000000 10
            ffffffff 00000000 00 = 00000000 10
            ffffffff 00000000 10 = 00000000 10
            ffffffff 00000000 01 = 00000000 10
            ffffffff 00000000 11 = 00000000 10
            00000000 00000001 00 = 00000001 00
            00000000 00000001 10 = 00000001 00
            00000000 00000001 01 = ffffffff 00
            00000000 00000001 11 = ffffffff 00
            00000001 00000001 00 = 00000001 00
            00000001 00000001 10 = 00000001 00
            00000001 00000001 01 = ffffffff 00
            00000001 00000001 11 = ffffffff 00
            00000002 00000001 00 = 00000001 00
            00000002 00000001 10 = 00000001 00
            00000002 00000001 01 = ffffffff 00
            00000002 00000001 11 = ffffffff 00
            7fffffff 00000001 00 = 00000001 00
            7fffffff 00000001 10 = 00000001 00
            7fffffff 00000001 01 = ffffffff 00
            7fffffff 00000001 11 = ffffffff 00
            80000000 00000001 00 = 00000001 00
            80000000 00000001 10 = 00000001 00
            80000000 00000001 01 = ffffffff 00
            80000000 00000001 11 = ffffffff 00
            80000001 00000001 00 = 00000001 00
            80000001 00000001 10 = 00000001 00
            80000001 00000001 01 = ffffffff 00
            80000001 00000001 11 = ffffffff 00
            fffffffe 00000001 00 = 00000001 00
            fffffffe 00000001 10 = 00000001 00
            fffffffe 00000001 01 = ffffffff 00
            fffffffe 00000001 11 = ffffffff 00
            ffffffff 00000001 00 = 00000001 00
            ffffffff 00000001 10 = 00000001 00
            ffffffff 00000001 01 = ffffffff 00
            ffffffff 00000001 11 = ffffffff 00
            00000000 00000002 00 = 00000002 00
            00000000 00000002 10 = 00000002 00
            00000000 00000002 01 = fffffffe 00
            00000000 00000002 11 = fffffffe 00
            00000001 00000002 00 = 00000002 00
            00000001 00000002 10 = 00000002 00
            00000001 00000002 01 = fffffffe 00
            00000001 00000002 11 = fffffffe 00
            00000002 00000002 00 = 00000002 00
            00000002 00000002 10 = 00000002 00
            00000002 00000002 01 = fffffffe 00
            00000002 00000002 11 = fffffffe 00
            7fffffff 00000002 00 = 00000002 00
            7fffffff 00000002 10 = 00000002 00
            7fffffff 00000002 01 = fffffffe 00
            7fffffff 00000002 11 = fffffffe 00
            80000000 00000002 00 = 00000002 00
            80000000 00000002 10 = 00000002 00
            80000000 00000002 01 = fffffffe 00
            80000000 00000002 11 = fffffffe 00
            80000001 00000002 00 = 00000002 00
            80000001 00000002 10 = 00000002 00
            80000001 00000002 01 = fffffffe 00
            80000001 00000002 11 = fffffffe 00
            fffffffe 00000002 00 = 00000002 00
            fffffffe 00000002 10 = 00000002 00
            fffffffe 00000002 01 = fffffffe 00
            fffffffe 00000002 11 = fffffffe 00
            ffffffff 00000002 00 = 00000002 00
            ffffffff 00000002 10 = 00000002 00
            ffffffff 00000002 01 = fffffffe 00
            ffffffff 00000002 11 = fffffffe 00
            00000000 7fffffff 00 = 7fffffff 00
            00000000 7fffffff 10 = 7fffffff 00
            00000000 7fffffff 01 = 80000001 00
            00000000 7fffffff 11 = 80000001 00
            00000001 7fffffff 00 = 7fffffff 00
            00000001 7fffffff 10 = 7fffffff 00
            00000001 7fffffff 01 = 80000001 00
            00000001 7fffffff 11 = 80000001 00
            00000002 7fffffff 00 = 7fffffff 00
            00000002 7fffffff 10 = 7fffffff 00
            00000002 7fffffff 01 = 80000001 00
            00000002 7fffffff 11 = 80000001 00
            7fffffff 7fffffff 00 = 7fffffff 00
            7fffffff 7fffffff 10 = 7fffffff 00
            7fffffff 7fffffff 01 = 80000001 00
            7fffffff 7fffffff 11 = 80000001 00
            80000000 7fffffff 00 = 7fffffff 00
            80000000 7fffffff 10 = 7fffffff 00
            80000000 7fffffff 01 = 80000001 00
            80000000 7fffffff 11 = 80000001 00
            80000001 7fffffff 00 = 7fffffff 00
            80000001 7fffffff 10 = 7fffffff 00
            80000001 7fffffff 01 = 80000001 00
            80000001 7fffffff 11 = 80000001 00
            fffffffe 7fffffff 00 = 7fffffff 00
            fffffffe 7fffffff 10 = 7fffffff 00
            fffffffe 7fffffff 01 = 80000001 00
            fffffffe 7fffffff 11 = 80000001 00
            ffffffff 7fffffff 00 = 7fffffff 00
            ffffffff 7fffffff 10 = 7fffffff 00
            ffffffff 7fffffff 01 = 80000001 00
            ffffffff 7fffffff 11 = 80000001 00
            00000000 80000000 00 = 80000000 01
            00000000 80000000 10 = 80000000 01
            00000000 80000000 01 = 80000000 01
            00000000 80000000 11 = 80000000 01
            00000001 80000000 00 = 80000000 01
            00000001 80000000 10 = 80000000 01
            00000001 80000000 01 = 80000000 01
            00000001 80000000 11 = 80000000 01
            00000002 80000000 00 = 80000000 01
            00000002 80000000 10 = 80000000 01
            00000002 80000000 01 = 80000000 01
            00000002 80000000 11 = 80000000 01
            7fffffff 80000000 00 = 80000000 01
            7fffffff 80000000 10 = 80000000 01
            7fffffff 80000000 01 = 80000000 01
            7fffffff 80000000 11 = 80000000 01
            80000000 80000000 00 = 80000000 01
            80000000 80000000 10 = 80000000 01
            80000000 80000000 01 = 80000000 01
            80000000 80000000 11 = 80000000 01
            80000001 80000000 00 = 80000000 01
            80000001 80000000 10 = 80000000 01
            80000001 80000000 01 = 80000000 01
            80000001 80000000 11 = 80000000 01
            fffffffe 80000000 00 = 80000000 01
            fffffffe 80000000 10 = 80000000 01
            fffffffe 80000000 01 = 80000000 01
            fffffffe 80000000 11 = 80000000 01
            ffffffff 80000000 00 = 80000000 01
            ffffffff 80000000 10 = 80000000 01
            ffffffff 80000000 01 = 80000000 01
            ffffffff 80000000 11 = 80000000 01
            00000000 80000001 00 = 80000001 01
            00000000 80000001 10 = 80000001 01
            00000000 80000001 01 = 7fffffff 01
            00000000 80000001 11 = 7fffffff 01
            00000001 80000001 00 = 80000001 01
            00000001 80000001 10 = 80000001 01
            00000001 80000001 01 = 7fffffff 01
            00000001 80000001 11 = 7fffffff 01
            00000002 80000001 00 = 80000001 01
            00000002 80000001 10 = 80000001 01
            00000002 80000001 01 = 7fffffff 01
            00000002 80000001 11 = 7fffffff 01
            7fffffff 80000001 00 = 80000001 01
            7fffffff 80000001 10 = 80000001 01
            7fffffff 80000001 01 = 7fffffff 01
            7fffffff 80000001 11 = 7fffffff 01
            80000000 80000001 00 = 80000001 01
            80000000 80000001 10 = 80000001 01
            80000000 80000001 01 = 7fffffff 01
            80000000 80000001 11 = 7fffffff 01
            80000001 80000001 00 = 80000001 01
            80000001 80000001 10 = 80000001 01
            80000001 80000001 01 = 7fffffff 01
            80000001 80000001 11 = 7fffffff 01
            fffffffe 80000001 00 = 80000001 01
            fffffffe 80000001 10 = 80000001 01
            fffffffe 80000001 01 = 7fffffff 01
            fffffffe 80000001 11 = 7fffffff 01
            ffffffff 80000001 00 = 80000001 01
            ffffffff 80000001 10 = 80000001 01
            ffffffff 80000001 01 = 7fffffff 01
            ffffffff 80000001 11 = 7fffffff 01
            00000000 fffffffe 00 = fffffffe 01
            00000000 fffffffe 10 = fffffffe 01
            00000000 fffffffe 01 = 00000002 01
            00000000 fffffffe 11 = 00000002 01
            00000001 fffffffe 00 = fffffffe 01
            00000001 fffffffe 10 = fffffffe 01
            00000001 fffffffe 01 = 00000002 01
            00000001 fffffffe 11 = 00000002 01
            00000002 fffffffe 00 = fffffffe 01
            00000002 fffffffe 10 = fffffffe 01
            00000002 fffffffe 01 = 00000002 01
            00000002 fffffffe 11 = 00000002 01
            7fffffff fffffffe 00 = fffffffe 01
            7fffffff fffffffe 10 = fffffffe 01
            7fffffff fffffffe 01 = 00000002 01
            7fffffff fffffffe 11 = 00000002 01
            80000000 fffffffe 00 = fffffffe 01
            80000000 fffffffe 10 = fffffffe 01
            80000000 fffffffe 01 = 00000002 01
            80000000 fffffffe 11 = 00000002 01
            80000001 fffffffe 00 = fffffffe 01
            80000001 fffffffe 10 = fffffffe 01
            80000001 fffffffe 01 = 00000002 01
            80000001 fffffffe 11 = 00000002 01
            fffffffe fffffffe 00 = fffffffe 01
            fffffffe fffffffe 10 = fffffffe 01
            fffffffe fffffffe 01 = 00000002 01
            fffffffe fffffffe 11 = 00000002 01
            ffffffff fffffffe 00 = fffffffe 01
            ffffffff fffffffe 10 = fffffffe 01
            ffffffff fffffffe 01 = 00000002 01
            ffffffff fffffffe 11 = 00000002 01
            00000000 ffffffff 00 = ffffffff 01
            00000000 ffffffff 10 = ffffffff 01
            00000000 ffffffff 01 = 00000001 01
            00000000 ffffffff 11 = 00000001 01
            00000001 ffffffff 00 = ffffffff 01
            00000001 ffffffff 10 = ffffffff 01
            00000001 ffffffff 01 = 00000001 01
            00000001 ffffffff 11 = 00000001 01
            00000002 ffffffff 00 = ffffffff 01
            00000002 ffffffff 10 = ffffffff 01
            00000002 ffffffff 01 = 00000001 01
            00000002 ffffffff 11 = 00000001 01
            7fffffff ffffffff 00 = ffffffff 01
            7fffffff ffffffff 10 = ffffffff 01
            7fffffff ffffffff 01 = 00000001 01
            7fffffff ffffffff 11 = 00000001 01
            80000000 ffffffff 00 = ffffffff 01
            80000000 ffffffff 10 = ffffffff 01
            80000000 ffffffff 01 = 00000001 01
            80000000 ffffffff 11 = 00000001 01
            80000001 ffffffff 00 = ffffffff 01
            80000001 ffffffff 10 = ffffffff 01
            80000001 ffffffff 01 = 00000001 01
            80000001 ffffffff 11 = 00000001 01
            fffffffe ffffffff 00 = ffffffff 01
            fffffffe ffffffff 10 = ffffffff 01
            fffffffe ffffffff 01 = 00000001 01
            fffffffe ffffffff 11 = 00000001 01
            ffffffff ffffffff 00 = ffffffff 01
            ffffffff ffffffff 10 = ffffffff 01
            ffffffff ffffffff 01 = 00000001 01
            ffffffff ffffffff 11 = 00000001 01
    

    I get the following for NEGNZ
    NEGNZ   ---D---- ---S---- ZC = ---Q---- ZC
            00000000 00000000 00 = 00000000 10
            00000000 00000000 10 = 00000000 10
            00000000 00000000 01 = 00000000 10
            00000000 00000000 11 = 00000000 10
            00000001 00000000 00 = 00000000 10
            00000001 00000000 10 = 00000000 10
            00000001 00000000 01 = 00000000 10
            00000001 00000000 11 = 00000000 10
            00000002 00000000 00 = 00000000 10
            00000002 00000000 10 = 00000000 10
            00000002 00000000 01 = 00000000 10
            00000002 00000000 11 = 00000000 10
            7fffffff 00000000 00 = 00000000 10
            7fffffff 00000000 10 = 00000000 10
            7fffffff 00000000 01 = 00000000 10
            7fffffff 00000000 11 = 00000000 10
            80000000 00000000 00 = 00000000 10
            80000000 00000000 10 = 00000000 10
            80000000 00000000 01 = 00000000 10
            80000000 00000000 11 = 00000000 10
            80000001 00000000 00 = 00000000 10
            80000001 00000000 10 = 00000000 10
            80000001 00000000 01 = 00000000 10
            80000001 00000000 11 = 00000000 10
            fffffffe 00000000 00 = 00000000 10
            fffffffe 00000000 10 = 00000000 10
            fffffffe 00000000 01 = 00000000 10
            fffffffe 00000000 11 = 00000000 10
            ffffffff 00000000 00 = 00000000 10
            ffffffff 00000000 10 = 00000000 10
            ffffffff 00000000 01 = 00000000 10
            ffffffff 00000000 11 = 00000000 10
            00000000 00000001 00 = ffffffff 00
            00000000 00000001 10 = 00000001 00
            00000000 00000001 01 = ffffffff 00
            00000000 00000001 11 = 00000001 00
            00000001 00000001 00 = ffffffff 00
            00000001 00000001 10 = 00000001 00
            00000001 00000001 01 = ffffffff 00
            00000001 00000001 11 = 00000001 00
            00000002 00000001 00 = ffffffff 00
            00000002 00000001 10 = 00000001 00
            00000002 00000001 01 = ffffffff 00
            00000002 00000001 11 = 00000001 00
            7fffffff 00000001 00 = ffffffff 00
            7fffffff 00000001 10 = 00000001 00
            7fffffff 00000001 01 = ffffffff 00
            7fffffff 00000001 11 = 00000001 00
            80000000 00000001 00 = ffffffff 00
            80000000 00000001 10 = 00000001 00
            80000000 00000001 01 = ffffffff 00
            80000000 00000001 11 = 00000001 00
            80000001 00000001 00 = ffffffff 00
            80000001 00000001 10 = 00000001 00
            80000001 00000001 01 = ffffffff 00
            80000001 00000001 11 = 00000001 00
            fffffffe 00000001 00 = ffffffff 00
            fffffffe 00000001 10 = 00000001 00
            fffffffe 00000001 01 = ffffffff 00
            fffffffe 00000001 11 = 00000001 00
            ffffffff 00000001 00 = ffffffff 00
            ffffffff 00000001 10 = 00000001 00
            ffffffff 00000001 01 = ffffffff 00
            ffffffff 00000001 11 = 00000001 00
            00000000 00000002 00 = fffffffe 00
            00000000 00000002 10 = 00000002 00
            00000000 00000002 01 = fffffffe 00
            00000000 00000002 11 = 00000002 00
            00000001 00000002 00 = fffffffe 00
            00000001 00000002 10 = 00000002 00
            00000001 00000002 01 = fffffffe 00
            00000001 00000002 11 = 00000002 00
            00000002 00000002 00 = fffffffe 00
            00000002 00000002 10 = 00000002 00
            00000002 00000002 01 = fffffffe 00
            00000002 00000002 11 = 00000002 00
            7fffffff 00000002 00 = fffffffe 00
            7fffffff 00000002 10 = 00000002 00
            7fffffff 00000002 01 = fffffffe 00
            7fffffff 00000002 11 = 00000002 00
            80000000 00000002 00 = fffffffe 00
            80000000 00000002 10 = 00000002 00
            80000000 00000002 01 = fffffffe 00
            80000000 00000002 11 = 00000002 00
            80000001 00000002 00 = fffffffe 00
            80000001 00000002 10 = 00000002 00
            80000001 00000002 01 = fffffffe 00
            80000001 00000002 11 = 00000002 00
            fffffffe 00000002 00 = fffffffe 00
            fffffffe 00000002 10 = 00000002 00
            fffffffe 00000002 01 = fffffffe 00
            fffffffe 00000002 11 = 00000002 00
            ffffffff 00000002 00 = fffffffe 00
            ffffffff 00000002 10 = 00000002 00
            ffffffff 00000002 01 = fffffffe 00
            ffffffff 00000002 11 = 00000002 00
            00000000 7fffffff 00 = 80000001 00
            00000000 7fffffff 10 = 7fffffff 00
            00000000 7fffffff 01 = 80000001 00
            00000000 7fffffff 11 = 7fffffff 00
            00000001 7fffffff 00 = 80000001 00
            00000001 7fffffff 10 = 7fffffff 00
            00000001 7fffffff 01 = 80000001 00
            00000001 7fffffff 11 = 7fffffff 00
            00000002 7fffffff 00 = 80000001 00
            00000002 7fffffff 10 = 7fffffff 00
            00000002 7fffffff 01 = 80000001 00
            00000002 7fffffff 11 = 7fffffff 00
            7fffffff 7fffffff 00 = 80000001 00
            7fffffff 7fffffff 10 = 7fffffff 00
            7fffffff 7fffffff 01 = 80000001 00
            7fffffff 7fffffff 11 = 7fffffff 00
            80000000 7fffffff 00 = 80000001 00
            80000000 7fffffff 10 = 7fffffff 00
            80000000 7fffffff 01 = 80000001 00
            80000000 7fffffff 11 = 7fffffff 00
            80000001 7fffffff 00 = 80000001 00
            80000001 7fffffff 10 = 7fffffff 00
            80000001 7fffffff 01 = 80000001 00
            80000001 7fffffff 11 = 7fffffff 00
            fffffffe 7fffffff 00 = 80000001 00
            fffffffe 7fffffff 10 = 7fffffff 00
            fffffffe 7fffffff 01 = 80000001 00
            fffffffe 7fffffff 11 = 7fffffff 00
            ffffffff 7fffffff 00 = 80000001 00
            ffffffff 7fffffff 10 = 7fffffff 00
            ffffffff 7fffffff 01 = 80000001 00
            ffffffff 7fffffff 11 = 7fffffff 00
            00000000 80000000 00 = 80000000 01
            00000000 80000000 10 = 80000000 01
            00000000 80000000 01 = 80000000 01
            00000000 80000000 11 = 80000000 01
            00000001 80000000 00 = 80000000 01
            00000001 80000000 10 = 80000000 01
            00000001 80000000 01 = 80000000 01
            00000001 80000000 11 = 80000000 01
            00000002 80000000 00 = 80000000 01
            00000002 80000000 10 = 80000000 01
            00000002 80000000 01 = 80000000 01
            00000002 80000000 11 = 80000000 01
            7fffffff 80000000 00 = 80000000 01
            7fffffff 80000000 10 = 80000000 01
            7fffffff 80000000 01 = 80000000 01
            7fffffff 80000000 11 = 80000000 01
            80000000 80000000 00 = 80000000 01
            80000000 80000000 10 = 80000000 01
            80000000 80000000 01 = 80000000 01
            80000000 80000000 11 = 80000000 01
            80000001 80000000 00 = 80000000 01
            80000001 80000000 10 = 80000000 01
            80000001 80000000 01 = 80000000 01
            80000001 80000000 11 = 80000000 01
            fffffffe 80000000 00 = 80000000 01
            fffffffe 80000000 10 = 80000000 01
            fffffffe 80000000 01 = 80000000 01
            fffffffe 80000000 11 = 80000000 01
            ffffffff 80000000 00 = 80000000 01
            ffffffff 80000000 10 = 80000000 01
            ffffffff 80000000 01 = 80000000 01
            ffffffff 80000000 11 = 80000000 01
            00000000 80000001 00 = 7fffffff 01
            00000000 80000001 10 = 80000001 01
            00000000 80000001 01 = 7fffffff 01
            00000000 80000001 11 = 80000001 01
            00000001 80000001 00 = 7fffffff 01
            00000001 80000001 10 = 80000001 01
            00000001 80000001 01 = 7fffffff 01
            00000001 80000001 11 = 80000001 01
            00000002 80000001 00 = 7fffffff 01
            00000002 80000001 10 = 80000001 01
            00000002 80000001 01 = 7fffffff 01
            00000002 80000001 11 = 80000001 01
            7fffffff 80000001 00 = 7fffffff 01
            7fffffff 80000001 10 = 80000001 01
            7fffffff 80000001 01 = 7fffffff 01
            7fffffff 80000001 11 = 80000001 01
            80000000 80000001 00 = 7fffffff 01
            80000000 80000001 10 = 80000001 01
            80000000 80000001 01 = 7fffffff 01
            80000000 80000001 11 = 80000001 01
            80000001 80000001 00 = 7fffffff 01
            80000001 80000001 10 = 80000001 01
            80000001 80000001 01 = 7fffffff 01
            80000001 80000001 11 = 80000001 01
            fffffffe 80000001 00 = 7fffffff 01
            fffffffe 80000001 10 = 80000001 01
            fffffffe 80000001 01 = 7fffffff 01
            fffffffe 80000001 11 = 80000001 01
            ffffffff 80000001 00 = 7fffffff 01
            ffffffff 80000001 10 = 80000001 01
            ffffffff 80000001 01 = 7fffffff 01
            ffffffff 80000001 11 = 80000001 01
            00000000 fffffffe 00 = 00000002 01
            00000000 fffffffe 10 = fffffffe 01
            00000000 fffffffe 01 = 00000002 01
            00000000 fffffffe 11 = fffffffe 01
            00000001 fffffffe 00 = 00000002 01
            00000001 fffffffe 10 = fffffffe 01
            00000001 fffffffe 01 = 00000002 01
            00000001 fffffffe 11 = fffffffe 01
            00000002 fffffffe 00 = 00000002 01
            00000002 fffffffe 10 = fffffffe 01
            00000002 fffffffe 01 = 00000002 01
            00000002 fffffffe 11 = fffffffe 01
            7fffffff fffffffe 00 = 00000002 01
            7fffffff fffffffe 10 = fffffffe 01
            7fffffff fffffffe 01 = 00000002 01
            7fffffff fffffffe 11 = fffffffe 01
            80000000 fffffffe 00 = 00000002 01
            80000000 fffffffe 10 = fffffffe 01
            80000000 fffffffe 01 = 00000002 01
            80000000 fffffffe 11 = fffffffe 01
            80000001 fffffffe 00 = 00000002 01
            80000001 fffffffe 10 = fffffffe 01
            80000001 fffffffe 01 = 00000002 01
            80000001 fffffffe 11 = fffffffe 01
            fffffffe fffffffe 00 = 00000002 01
            fffffffe fffffffe 10 = fffffffe 01
            fffffffe fffffffe 01 = 00000002 01
            fffffffe fffffffe 11 = fffffffe 01
            ffffffff fffffffe 00 = 00000002 01
            ffffffff fffffffe 10 = fffffffe 01
            ffffffff fffffffe 01 = 00000002 01
            ffffffff fffffffe 11 = fffffffe 01
            00000000 ffffffff 00 = 00000001 01
            00000000 ffffffff 10 = ffffffff 01
            00000000 ffffffff 01 = 00000001 01
            00000000 ffffffff 11 = ffffffff 01
            00000001 ffffffff 00 = 00000001 01
            00000001 ffffffff 10 = ffffffff 01
            00000001 ffffffff 01 = 00000001 01
            00000001 ffffffff 11 = ffffffff 01
            00000002 ffffffff 00 = 00000001 01
            00000002 ffffffff 10 = ffffffff 01
            00000002 ffffffff 01 = 00000001 01
            00000002 ffffffff 11 = ffffffff 01
            7fffffff ffffffff 00 = 00000001 01
            7fffffff ffffffff 10 = ffffffff 01
            7fffffff ffffffff 01 = 00000001 01
            7fffffff ffffffff 11 = ffffffff 01
            80000000 ffffffff 00 = 00000001 01
            80000000 ffffffff 10 = ffffffff 01
            80000000 ffffffff 01 = 00000001 01
            80000000 ffffffff 11 = ffffffff 01
            80000001 ffffffff 00 = 00000001 01
            80000001 ffffffff 10 = ffffffff 01
            80000001 ffffffff 01 = 00000001 01
            80000001 ffffffff 11 = ffffffff 01
            fffffffe ffffffff 00 = 00000001 01
            fffffffe ffffffff 10 = ffffffff 01
            fffffffe ffffffff 01 = 00000001 01
            fffffffe ffffffff 11 = ffffffff 01
            ffffffff ffffffff 00 = 00000001 01
            ffffffff ffffffff 10 = ffffffff 01
            ffffffff ffffffff 01 = 00000001 01
            ffffffff ffffffff 11 = ffffffff 01
    
Sign In or Register to comment.