Hi All Can anyone please correct me if I'm wrong, but if I write ce2[0x5]=0x31; with int *ce2 =(int *) (0xA0000000); to emif on 6711DSK then on the address lines I must see the following: EA2 = 3.3V (1) EA3 = 0V (0) EA4 = 3.3V (1) and ED0 = 3.3V (1) ED1 = 0V (0) ED2 = 0V (0) ED3 = 0V (0) ED4 = 3.3V (1) ED5 = 3.3V (1) Am I correct in saying this? If not can you please refer me to any documents to read up on this? I get the correct values on the databus but not on the address bus, what am I doing wrong???? Thanks Werner |
|
EMIF Memory
Started by ●August 18, 2003
Reply by ●August 18, 20032003-08-18
Werner- > Can anyone please correct me if I'm wrong, but if I write ce2[0x5]=0x31; with int *ce2 =(int *) (0xA0000000); to emif on 6711DSK then on the address lines I must see the following: > EA2 = 3.3V (1) > EA3 = 0V (0) > EA4 = 3.3V (1) Is ce2 an array of int? If so then by accessing index 5, the address lines should be 20, or: A0 A1 A2 A3 A4 -------------- 1 0 1 0 0 And if you say *ce2++ = 0x31, then ce2 will increase by 4. Jeff Brower system engineer Signalogic > and > > ED0 = 3.3V (1) > ED1 = 0V (0) > ED2 = 0V (0) > ED3 = 0V (0) > ED4 = 3.3V (1) > ED5 = 3.3V (1) > > Am I correct in saying this? If not can you please refer me to any documents to read up on this? > > I get the correct values on the databus but not on the address bus, what am I doing wrong???? > > Thanks > Werner |
Reply by ●August 18, 20032003-08-18
Werner- > No, ce2 is not an array of int. I just want to write 0100b on the address > lines. What lines do I use? The DSK has only address pins numbered EA2 and > up. What happened to 0 and 1???? 0 and 1 are not connected because the C6x11 cannot physically perform byte and short int accesses. It only makes physical 32-bit accesses, so the lower 2 address lines are not needed. -Jeff > ----- Original Message ----- > From: "Jeff Brower" <> > To: "Werner du Toit" <> > Cc: <> > Sent: Monday, August 18, 2003 4:48 PM > Subject: Re: [c6x] EMIF Memory > > > Werner- > > > > > Can anyone please correct me if I'm wrong, but if I write ce2[0x5]=0x31; > with int *ce2 =(int *) (0xA0000000); to emif on 6711DSK then on the address > lines I must see the following: > > > EA2 = 3.3V (1) > > > EA3 = 0V (0) > > > EA4 = 3.3V (1) > > > > Is ce2 an array of int? If so then by accessing index 5, the address > lines should be > > 20, or: > > > > A0 A1 A2 A3 A4 > > -------------- > > 1 0 1 0 0 > > > > And if you say *ce2++ = 0x31, then ce2 will increase by 4. > > > > Jeff Brower > > system engineer > > Signalogic > > > > > and > > > > > > ED0 = 3.3V (1) > > > ED1 = 0V (0) > > > ED2 = 0V (0) > > > ED3 = 0V (0) > > > ED4 = 3.3V (1) > > > ED5 = 3.3V (1) > > > > > > Am I correct in saying this? If not can you please refer me to any > documents to read up on this? > > > > > > I get the correct values on the databus but not on the address bus, what > am I doing wrong???? > > > > > > Thanks > > > Werner > > > > |
|
Reply by ●August 19, 20032003-08-19
Werner and Jeff,
The 6x11 can r/w bytes, halfwords or words [6711 can read double words] on
any boundary [if the external h/w supports it].
The two "missing address bits" are decoded [2:4] as byte enables
0-3. If the task is to address bytes, halfwords or words you must have
logic or hardware capable of selecting sets of 8 bits.
If you just want a data pattern of '4' or '5' on
address pins EA2,3 and 4, you must multiply the desired value by 4 [or shift
left 2].
I hope this helps.
mikedunn
Jeff Brower <j...@signalogic.com> wrote: Werner- |
Reply by ●August 19, 20032003-08-19
Werner- > Without having external memory connected I have the write instruction *(int > *)(0xA0000010) = 0x31;. This writes 110001b to the address 0100b. When I > display this on a scope there are some unwanted noise in my address lines at > 61MHz with a Vp-p of 5V and a duration of 9ns. Do you know anything about > this or could it be that I just have a noisy source?? That's hard to tell. Not connecting the address lines is not a valid test for noise measurement; you could see things that turn out to be not relevant and also not see some things that could be significant. You will have to connect the SDRAM devices and place the address lines under load and make noise measurements then. -Jeff > ----- Original Message ----- > From: "Jeff Brower" <> > To: "Werner du Toit" <>; <> > Sent: Monday, August 18, 2003 5:49 PM > Subject: Re: [c6x] EMIF Memory > > > Werner- > > > > > No, ce2 is not an array of int. I just want to write 0100b on the > address > > > lines. What lines do I use? The DSK has only address pins numbered EA2 > and > > > up. What happened to 0 and 1???? > > > > 0 and 1 are not connected because the C6x11 cannot physically perform byte > and short > > int accesses. It only makes physical 32-bit accesses, so the lower 2 > address lines > > are not needed. > > > > -Jeff > > > > > > > ----- Original Message ----- > > > From: "Jeff Brower" <> > > > To: "Werner du Toit" <> > > > Cc: <> > > > Sent: Monday, August 18, 2003 4:48 PM > > > Subject: Re: [c6x] EMIF Memory > > > > > > > Werner- > > > > > > > > > Can anyone please correct me if I'm wrong, but if I write > ce2[0x5]=0x31; > > > with int *ce2 =(int *) (0xA0000000); to emif on 6711DSK then on the > address > > > lines I must see the following: > > > > > EA2 = 3.3V (1) > > > > > EA3 = 0V (0) > > > > > EA4 = 3.3V (1) > > > > > > > > Is ce2 an array of int? If so then by accessing index 5, the address > > > lines should be > > > > 20, or: > > > > > > > > A0 A1 A2 A3 A4 > > > > -------------- > > > > 1 0 1 0 0 > > > > > > > > And if you say *ce2++ = 0x31, then ce2 will increase by 4. > > > > > > > > Jeff Brower > > > > system engineer > > > > Signalogic > > > > > > > > > and > > > > > > > > > > ED0 = 3.3V (1) > > > > > ED1 = 0V (0) > > > > > ED2 = 0V (0) > > > > > ED3 = 0V (0) > > > > > ED4 = 3.3V (1) > > > > > ED5 = 3.3V (1) > > > > > > > > > > Am I correct in saying this? If not can you please refer me to any > > > documents to read up on this? > > > > > > > > > > I get the correct values on the databus but not on the address bus, > what > > > am I doing wrong???? > > > > > > > > > > Thanks > > > > > Werner > > > > > > > > > > > > |
|
Reply by ●August 19, 20032003-08-19
At 11:19 AM 8/19/2003, you wrote: >Werner- > > > Without having external memory connected I have the write instruction *(int > > *)(0xA0000010) = 0x31;. This writes 110001b to the address 0100b. When I > > display this on a scope there are some unwanted noise in my address > lines at > > 61MHz with a Vp-p of 5V and a duration of 9ns. Do you know anything about > > this or could it be that I just have a noisy source?? > >That's hard to tell. Not connecting the address lines is not a valid test >for noise >measurement; you could see things that turn out to be not relevant and >also not see >some things that could be significant. You will have to connect the SDRAM >devices >and place the address lines under load and make noise measurements then. > >-Jeff The OP may have made a typo when he posted that he had a 5 Vpp signal on his address lines. I expect this really is a 0.5 Vpp signal which is nothing to worry about as long as the signal remains above 2.4 V or below 0.4 V from the driver or 2.0 V and 0.8 V at the receiver. To have a 5 Vpp signal on *any* signal in your system would be very unusual, and I mean *VERY*. Most devices in a system are not even connected to a 5 V supply. Rick Collins Arius - A Signal Processing Solutions Company Specializing in DSP and FPGA design http://www.arius.com 4 King Ave 301-682-7772 Voice Frederick, MD 21701-3110 301-682-7666 FAX |
Reply by ●August 19, 20032003-08-19
Mike- > The 6x11 can r/w bytes, halfwords or words [6711 can read > double words] on any boundary [if the external h/w supports it]. > The two "missing address bits" are decoded [2:4] as byte enables 0-3. > If the task is to address bytes, halfwords or words you must have > logic or hardware capable of selecting sets of 8 bits. If you just > want a data pattern of '4' or '5' on address pins EA2,3 and > 4, you must multiply the desired value by 4 [or shift left 2]. My understanding is that regardless of the byte enable values, the processor still does not truly operate on "any boundary" and the byte enables are byte lane on/off signals and nothing more. For example, if code does a STW instruction at address 1, the processor will not make 2 successive accesses and store 3 bytes on the first 32 bits and 8bits in the 2nd 32 bits. So with address values not a multiple of 4, the only choice is to use xDB and xDH instructions. That's something I always wondered about. If you know how it works, please let me know. -Jeff Jeff Brower <> wrote: Werner- > No, ce2 is not an array of int. I just want to write 0100b on the address > lines. What lines do I use? The DSK has only address pins numbered EA2 and > up. What happened to 0 and 1???? 0 and 1 are not connected because the C6x11 cannot physically perform byte and short int accesses. It only makes physical 32-bit accesses, so the lower 2 address lines are not needed. -Jeff > ----- Original Message ----- > From: "Jeff Brower" > To: "Werner du Toit" > Cc: > Sent: Monday, August 18, 2003 4:48 PM > Subject: Re: [c6x] EMIF Memory > > > Werner- > > > > > Can anyone please correct me if I'm wrong, but if I write ce2[0x5]=0x31; > with int *ce2 =(int *) (0xA0000000); to emif on 6711DSK then on the address > lines I must see the following: > > > EA2 = 3.3V (1) > > > EA3 = 0V (0) > > > EA4 = 3.3V (1) > > > > Is ce2 an array of int? If so then by accessing index 5, the address > lines should be > > 20, or: > > > > A0 A1 A2 A3 A4 > > -------------- > > 1 0 1 0 0 > > > > And if you say *ce2++ = 0x31, then ce2 will increase by 4. > > > > Jeff Brower > > system engineer > > Signalogic > > > > > and > > > > > > ED0 = 3.3V (1) > > > ED1 = 0V (0) > > > ED2 = 0V (0) > > > ED3 = 0V (0) > > > ED4 = 3.3V (1) > > > ED5 = 3.3V (1) > > > > > > Am I correct in saying this? If not can you please refer me to any > documents to read up on this? > > > > > > I get the correct values on the databus but not on the address bus, what > am I doing wrong???? > > > > > > Thanks > > > Werner > > > > |
Reply by ●August 19, 20032003-08-19
Rick- > The OP may have made a typo when he posted that he had a 5 Vpp signal on > his address lines. I expect this really is a 0.5 Vpp signal which is > nothing to worry about as long as the signal remains above 2.4 V or below > 0.4 V from the driver or 2.0 V and 0.8 V at the receiver. > > To have a 5 Vpp signal on *any* signal in your system would be very > unusual, and I mean *VERY*. Most devices in a system are not even > connected to a 5 V supply. Or it could be that Werner measured it as +/- 0.85 V overshoot either side of 3.3V. That would be a lot of ringing, but maybe not unexpected if the address lines are unterminated 2 or 3 cm or more from the DSP. -Jeff |