gnupic: Thread: Square wave stimulus DOES work.


[<<] [<] Page 1 of 1 [>] [>>]
Subject: Square wave stimulus DOES work.
From: Scott Dattalo ####@####.####
Date: 2 Jun 2000 12:05:53 -0000
Message-Id: <Pine.LNX.4.21.0006020654100.26390-100000@tempest2.blackhat.net>

But let me explain.

Martin,

I went back to the example for the square wave stimulus. Look in the gpsim
source directory:

examples/14bit/

You'll find two files:

sync_stim.stc
stim_test.asm

Assemble stim_test.asm and try out the stimulu command file. e.g.

$ gpasm stim_test.stc
$ gpsim
gpsim> load c stim_test.stc

Now, this test asm file will monitor an I/O pin that has a square stimulus
attached to it. It counts the number of rising edges that are detected. The .stc
file sets a write break point on the counter variable and will break gpsim every
time the counter reaches the value of 10 dec. I just tried it out and it works
with version 0.19.2. 

Now two points need to be noted:

1) The pin-out window will not automatically update itself. Consequently, the
states for the I/O pins displayed in the window may not be accurate. You can
force the window to update by modifying one of the I/O pins (like double
clicking on one of the H's or L's)

2) The sqw stimulus does not drive the I/O pin. Instead, the I/O pin has to be
read to determine the state of the stimulus. What this means, is that you can't
use the sqw stimulus to initiate an interrupt on change. The I/O port has to
poll the stimulus to detect the change.


Scott

P.S. I modified the sync_stim.stc file slightly. Here's the new copy:

# set verbose 3
# gpsim

# Startup command file for stim_test.hex

# Create the processor that's to be simulated

processor p16c84 fred

# Load the .hex file

load s stim_test.cod

# Create a stimulus node:
node test_node

# Create a square wave stimulus that's 1000 cycles long
# and attach it to portb bit 0. The duty cycle is 30%
# and the phase is 10%. 
echo stimulus create

stimulus sqw

# initial 1
start 10000

period 1000

high_time 300

phase 100

# port portb 0

end

echo stimulus created

attach test_node portb0 sa_square_wave

# Set a cycle break point on the One hundred thousand'th
# execution cycle
break c 100000
# Set a register write break point when 10 (dec) is 
# written to register 0x20.
break wv 0x20 10


Subject: Re: Square wave stimulus DOES work.
From: Ralf Forsberg ####@####.####
Date: 4 Jun 2000 10:14:23 -0000
Message-Id: <00060412100500.10076@small>

On Fri, 02 Jun 2000, you wrote:
>
>1) The pin-out window will not automatically update itself. Consequently, the
>states for the I/O pins displayed in the window may not be accurate. You can
>force the window to update by modifying one of the I/O pins (like double
>clicking on one of the H's or L's)

This sucks, my fault. I'll make it update with the other windows.
After that, if you do "set gui_update 1" and "run", you should see the
pinout window change every time a pin is changed in simulation.

I'm also adding an open file dialog, and while doing that I had to
try to get gpsim to accept paths with directories so you can do "gpsim
-s ../xxx/yyy.cod". I'm also adding a button bar for
step/run/stop/a.s.o, and implementing the menu "windows" to make it
easier to open and close windows. You'll just have to do <ALT>w+r
while having a gpsim window in focus to select menu Windows->Ram in
main gpsim window, and you'll get the register window.

 / Ralf
[<<] [<] Page 1 of 1 [>] [>>]


Powered by ezmlm-browse 0.20.