It is currently Tue Sep 18, 2018 9:44 pm

All times are UTC - 7 hours





Post new topic Reply to topic  [ 52 posts ]  Go to page Previous  1, 2, 3, 4  Next
Author Message
PostPosted: Wed Sep 12, 2018 3:32 pm 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 6801
Location: Canada
So, I wrote a frequency sweep test that approximates a sine and quasi-logarithmically increases the frequency. The APU sines are assuming the DMC is linear (which it isn't quite), and the 5B sines are making do with the logarithmic steps (trying to mitigate by summing all 3 channels). Not ideal but maybe has enough SNR to be usable?

The graph here uses an FFT to find the dominant frequency for some window in the recording, and RMS to estimate its magnitude in that window. I'm sure there's some bias in this process, but again hoping it's good enough to be usable. (Anyone better versed in filter analysis techniques than me, feel free to give me advice on doing this better.)

There's also a 10 second noise burst (APU noise / 5B noise) for each of these tests, which have spectra that seem to match these curves pretty well (but harder to read through the noise), so that seemed to verify the validity of the analysis technique. I also tried modelling a best fit to the step responses for each of these but I had a hard time duplicating the curves, and abandoned the attempt.

The result:
Attachment:
sweep_5b.png
sweep_5b.png [ 82.36 KiB | Viewed 328 times ]

  • 1. NES APU, just for comparison.
  • 2. Famicom APU. Note that for me this has a stronger highpass than the NES. Is this normal? Wiki: APU Mixer says "The Famicom hardware instead ONLY specifies a first-order high-pass filter at 8 Hz" which is... obviously not what I'm looking at here...?
  • 3. 5B sine through the 5B amplifier. I assume this would be unaffected by the Famicom's APU highpass?
  • 4. Famicom DMC sine through the 5B amplifier. I assume this is double dipping with its own highpass and the 5Bs on top?

Additionally, I tried to measured my recording device against a cheap signal generator I had, which seemed to show a 1-pole lowpass with a corner of ~7.1Hz. (Also a sharp lowpass up near the nyquist.) So, I presume that would colour these results a little. Edit: Kind of uncertain about this, its DC filter might be lower and sharper... need to do some more tests. I don't have very good tools for meauring my tools. ;)


Last edited by rainwarrior on Wed Sep 12, 2018 6:47 pm, edited 3 times in total.

Top
 Profile  
 
PostPosted: Wed Sep 12, 2018 3:39 pm 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 20556
Location: NE Indiana, USA (NTSC)
In a previous topic, I posted a ROM and source for sine sweep that is at least somewhat corrected for DMC DAC nonlinearity. Feel free to incorporate it.


Top
 Profile  
 
PostPosted: Wed Sep 12, 2018 3:48 pm 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 6801
Location: Canada
tepples wrote:
In a previous topic, I posted a ROM and source for sine sweep that is at least somewhat corrected for DMC DAC nonlinearity. Feel free to incorporate it.

The reason I didn't correct for its nonlinearity is simply that I haven't measured its linearity curve yet (one of many things on my to-do list), and I'm not willing to assume that "blargg's formula" is accurate for this purpose. I could easily have put that formula into my program that generates the sine table, but I feel like that would mostly only accomplish a slightly better SNR in emulators that implement blargg's formula.

For the purposes of the test, as far as I can tell the difference isn't very significant (...but please correct me on that point if you know I'm wrong). Like I mentioned above, the independent measurement of the noise spectrum seems to match fairly well with the sweep analysis, so I feel some justification in making this assumption.


Top
 Profile  
 
PostPosted: Wed Sep 12, 2018 4:35 pm 
Offline

Joined: Thu Aug 20, 2015 3:09 am
Posts: 396
You're on fire, rainwarrior! I really wish I was in a position to contribute or at least make use of all this awesome data you're posting. :(


Top
 Profile  
 
PostPosted: Wed Sep 12, 2018 4:52 pm 
Offline

Joined: Sun Apr 13, 2008 11:12 am
Posts: 7519
Location: Seattle
rainwarrior wrote:
"The Famicom hardware instead ONLY specifies a first-order high-pass filter at 8 Hz"
I put that there, but in retrospect it's pretty misleading. What I meant was that the canonical schematic of the original Famicom – http://nesdev.com/Ntd_8bit.jpg – shows only the presence of a highpass filter with corner frequency at 8Hz. But the RF modulator changes that, and an AV Famicom is probably different too.

.... Also, somehow I did the math wrong. Evaluating 1/(R3//R4//R5 · C2 · 2π) works out to 37Hz, not 8Hz. I don't have any idea what I was thinking at the time.

Quote:
5B sine through the 5B amplifier. I assume this would be unaffected by the Famicom's APU highpass?
As far as I know, the only highpass is the one behind the inverter-as-amplifier, before it goes to the cartridge slot.


Top
 Profile  
 
PostPosted: Wed Sep 12, 2018 11:11 pm 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 6801
Location: Canada
James-F recorded the APU part of the sweep test in both his Famicoms (one is modded, one is AV). Here's a plot of the results, interesting to compare. (Not sure how much is due to different recording devices, unfortunately.)

I can add more if anyone else wants to record it. (sweep_5b_nrom.nes, doesn't require a hotswap, and the first half of the test is APU only, about 90 seconds.)

Attachment:
sweep_famicom_3.png
sweep_famicom_3.png [ 90.12 KiB | Viewed 286 times ]


Top
 Profile  
 
PostPosted: Thu Sep 13, 2018 2:14 am 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 6801
Location: Canada
So I've been pushing around chains of 1-pole highpass filters trying to see if I can model those sweeps:
Attachment:
sweep_models_1.png
sweep_models_1.png [ 143.53 KiB | Viewed 278 times ]


My NES and Famicom seem to fit pretty well with a single filter (16 and 32 Hz cutoffs respectively). In all of these there is an additional 3 Hz highpass assumed from my recording device (still not sure exactly what it's characteristics are, but this seemed to improve the fit of the NES/Famicom APU curves, and seems to be within a plausible range of the rough measurements I've managed to take so far).

The 5B curves are too sharp a knee to work with just one filter. I decided to model it as the internal 5B and the APU input each having their own filter before entering the amplifier, then finally an additional shared filter on the output of the amplifier. I'm not sure how much sense this makes, but maybe the amplifier in between justifies having two.

5B APU input: 12 Hz
5B internal: 20 Hz
5B output: 12 Hz

The internal curve here only matches until about 10 Hz. This might be the higher frequency noise due to the rough sine wave that's not being attenuated? Maybe I'll get a better idea of this bias once I implement this in NSFPlay and do the same analysis with my synthesized version. I think in all cases the signal should bias high from the model as it weakens but the noise on the APU's sine is a much lower magnitude. (Ignoring most of the lower left part of the graph.)

The APU passing through the 5B has the sharpest falloff of them all. Picking up the 32 Hz from the Famicom first, then a presumed 12 Hz cutoff on its input to the 5B, then the shared 12 Hz on its output... doesn't fit exactly, but I guess it's pretty close. This might be partly due to the amplifier nonlinearity; the 5B internal stuff is kept quiet enough to stay linear but the DMC here is a lot louder, might be causing distortion that's affecting the curve?

I was hoping the APU thru 5B and internal 5B could be modelled with the same filter (and the APU merely getting an additional filter from the Famicom) but I couldn't find a match that worked for both, which is why I've hypothesized the separate input filters... but it seems bizarre to me that they'd put an extra one on the APU like this.


Anyhow, next step is to model these in my emulator, then record and analyze this sweep test from the emulated version... that should give me some better idea of what's still missing.


Last edited by rainwarrior on Thu Sep 13, 2018 12:42 pm, edited 1 time in total.

Top
 Profile  
 
PostPosted: Thu Sep 13, 2018 10:13 am 
Offline

Joined: Sun Apr 13, 2008 11:12 am
Posts: 7519
Location: Seattle
rainwarrior wrote:
I was hoping the APU thru 5B and internal 5B could be modelled with the sample filter (and the APU merely getting an additional filter from the Famicom) but I couldn't find a match that worked for both, which is why I've hypothesized the separate input filters... but it seems bizarre to me that they'd put an extra one on the APU like this.
Every inverter-as-amplifier requires a highpass filter, because they need one to remove the DC offset to make sure the inverter's actually somewhere where it amplifies instead of rails.

As I said, there's the highpass filter before the one inside the Famicom (R3//R4//R5 · C5).

There's also an unknown lowpass inside the Famicom (output impedance of U7 · C8)
There's a highpass filter between the circuit that mixes 5B and APU audio on the cart and the amplifier (R1//R2 · C3)
There's a highpass filter after the amplifier (output impedance of amplifier · C4)

After that, it goes straight to the Famicom's RF modulator, but who knows what that does.


Top
 Profile  
 
PostPosted: Thu Sep 13, 2018 2:58 pm 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 6801
Location: Canada
Started a thread for reading the PCB components: thread

rainwarrior wrote:
5B Gimmick! (bootgod)

C1: {R} / 85°C / M4413 / 6.3 v / 47 µF (top left)
C2: 103 (top right)
C3/C4: 85°C / (M) / 228 / 50 v / 1 (top middle, does not say µF after 1)

R1: 10 x 100 5% (right top, brown black orange gold)
R2: 10 x 1k 5% (right bottom, brown black red gold)
R3: 10 x 10k 5% (middle, brown black yellow gold)


...and lidnariq's first response:

lidnariq wrote:
(R1//R2 · C3) = 909Ω·1µF → 175Hz.
That's ... not right. Maybe the 5B has a significant output impedance which moves the corner frequency down.


Top
 Profile  
 
PostPosted: Thu Sep 13, 2018 7:43 pm 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 6801
Location: Canada
Does this look correct to you? I was surprised that pins 2 (amplifier input) and 3 (amplifier output) are directly connected with a resistor like this. Feels like I'm missing a connection to ground somewhere in here... (seems to match this diagram)
Attachment:
5b_audio_diagram.png
5b_audio_diagram.png [ 29.28 KiB | Viewed 114 times ]


My tracing:
Attachment:
5b_audio_tracing.png
5b_audio_tracing.png [ 2.55 MiB | Viewed 124 times ]


Top
 Profile  
 
PostPosted: Thu Sep 13, 2018 8:25 pm 
Offline

Joined: Sun Apr 13, 2008 11:12 am
Posts: 7519
Location: Seattle
Yeah, that's the same thing I thought I saw when I traced the board six years ago. I mistakenly thought I'd already linked to that: I'm sorry that I didn't.

Inverters-as-amplifier often have a topology like that. The diagram I drew for the MMC5's amplifier is similar.


The external resistor on an inverter-as-amplifier:
Code:
      +---R---+   
      |  \    |
in ---+--|>O--+-- out
         /           
has the same function as with an op-amp:
Code:
 
      +---R---+
      |  \    |
in ---+--|-\  |   
         |  >-+-- out
    ~2V--|+/         
         /   
but is a lot fewer transistors inside.


Top
 Profile  
 
PostPosted: Thu Sep 13, 2018 8:47 pm 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 6801
Location: Canada
Ah, that makes sense. Thanks.

I guess I had been thinking of the amplifier as a self contained thing, but really I shouldn't have. Ha ha.


Top
 Profile  
 
PostPosted: Fri Sep 14, 2018 7:48 am 
Offline
User avatar

Joined: Fri Nov 03, 2017 11:54 pm
Posts: 11
Might as well be a simple inverting op-amp.
Pin 27 is the 5B chip output, while pin 45 is you standard famicom signal.
I would guess this cart is loud in comparison to others since the amplification factor is quite high if it is indeed a simple op-amp, but I have no idea.
From lidnariq's post I can see MMC5 mixes two additional channels with the famicom 2A03.

Image


Top
 Profile  
 
PostPosted: Fri Sep 14, 2018 10:39 am 
Offline

Joined: Sun Apr 13, 2008 11:12 am
Posts: 7519
Location: Seattle
James-F wrote:
Might as well be a simple inverting op-amp.
Because you're throwing this into LTSpice, you really ought to actually build a CMOS or NMOS inverter rather than just using an op-amp.

Although I can neither find a depletion nMOSFET in their library nor can I figure out how to get it to accept a model statement declaring one...


Top
 Profile  
 
PostPosted: Fri Sep 14, 2018 9:03 pm 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 6801
Location: Canada
I tried out LTspice (figured it was a good excuse to learn). Though I probably don't have enough knowledge of circuit design to make very good use of it.

A question about using an inverter as an amplifier: to accomplish this, we need to bias the input to some middle voltage? Right? (2.5v?)

Would a voltage divider inside the 5B before the inverter input account for the highpass strength? For example if I put the input from pin 2 through the middle of a 10k / 10k divider, it seems to lower the cutoff from ~145Hz to ~30Hz. (I seemed to be measuring a 2-pole effect though, not sure how to account for that.)

Was looking at the inverter in the Famicom schematics too, does this achieve a bias by outputting the audio signal from the 2A03 already in an inverted state?


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 52 posts ]  Go to page Previous  1, 2, 3, 4  Next

All times are UTC - 7 hours


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group