tt06-psg-saa1099
所属分类:内容生成
开发工具:Verilog
文件大小:0KB
下载次数:0
上传日期:2023-11-16 08:36:28
上 传 者:
sh-1993
说明: 与飞利浦SAA1099 6语音可编程声音发生器(PSG)芯片一起提交的TinyTapeout。
(TinyTapeout submission with the SAA1099 a 6-voice programmable sound generator (PSG) chip from Philips.)
文件列表:
LICENSE (11357, 2023-11-20)
docs/ (0, 2023-11-20)
docs/SAA1099P_-_Bare.jpg (143011, 2023-11-20)
docs/SAA1099_data_sheet_1984.pdf (387412, 2023-11-20)
docs/SAA1099_data_sheet_1986.pdf (1028516, 2023-11-20)
docs/SAA1099_pinout_42C45.jpeg (14217, 2023-11-20)
docs/SAA1099_technical_publication_231.pdf (3950942, 2023-11-20)
docs/saa1099-4.jpg (98210, 2023-11-20)
info.yaml (4120, 2023-11-20)
real_chip_recordings/ (0, 2023-11-20)
real_chip_recordings/cms_fastest_tone_lowest_noise_both_auto.flac (633839, 2023-11-20)
real_chip_recordings/cms_lowest_tone_highest_noise_both_manual.flac (536767, 2023-11-20)
src/ (0, 2023-11-20)
src/Makefile (1127, 2023-11-20)
src/cells.v (1479, 2023-11-20)
src/config.tcl (2549, 2023-11-20)
src/tb.gtkw (746, 2023-11-20)
src/tb.v (1307, 2023-11-20)
src/test.py (1493, 2023-11-20)
![](https://github.com/rejunity/tt06-psg-saa1099/blob/master/../../workflows/gds/badge.svg) ![](https://github.com/rejunity/tt06-psg-saa1099/blob/master/../../workflows/docs/badge.svg) ![](https://github.com/rejunity/tt06-psg-saa1099/blob/master/../../workflows/test/badge.svg)
# Philips SAA1099 PSG in Verilog for Tiny Tapeout
* Wiki: https://en.wikipedia.org/wiki/Philips_SAA1099 and https://www.wikiwand.com/en/Philips_SAA1099
* Wiki: https://www.vgmpf.com/Wiki/index.php?title=SAA1099
* Manuals: https://www.vgmpf.com/Wiki/images/1/19/SAA1099_-_Manual_-_1984.pdf
* Manuals from SGI: http://www.sgistuff.net/mirrors/4dfaq/#appendixB
* Manuals from Sam Coupe: https://velesoft.speccy.cz/saa1099-cz.htm
* Manuals from Sam Coupe: https://velesoft.speccy.cz/samcoupe/saa1099/saa-1099_pinouts.txt
* Manuals from Sam Coupe: https://velesoft.speccy.cz/samcoupe/saa1099/saa1099-doc5-en.png
* Manuals from Sam Coupe: https://www.worldofsam.org/products/saa1099
## Chip technical capabilities
* 6 frequency generators, 8 octaves, 256 tones per octave, frequency range ffrom 31 Hz to 7.81 kHz
* 2 noise generators, range from 61 to 15.6 kHz
* 2 envelope generators
* common clock frequency 8 MHz, the SAA1099s on the GameBlaster are clocked at 7.15909 MHz ( highest frequency the tone generators can reach is about 6.99 kHz)
## Historical use of the Philips SAA1099
* Silicon Graphics IRIS Professional 4D and IRIS Power 4D machines
* Creative Sound Blaster 1.0 card
* Sam Coupe home computer
* System 5 arcade game system
## Pinout
```
SAA1099 (Philips)
------------------------
func pin pin func
/WR 1 18 Vcc
/CS 2 17 D7
A0 3 16 D6
OutR 4 15 D5
OutL 5 14 D4
Iref 6 13 D3
/DTACK 7 12 D2
CLK 8 11 D1
GND 9 10 D0
```
## Tests
* envelope test: https://www.youtube.com/watch?v=-ELEH-RX0JE
## Recordings from the real chip
* PDM tables by stripwax https://www.vogons.org/viewtopic.php?f=9&t=51695&start=60
* by Jepael http://www.vogons.org/viewtopic.php?f=9&t=51695
* by van Heusden https://vanheusden.com/electronics/SAA1099-clock/
* http://www.etheroneph.com/machinery/529-zvukogenerator-saa1099.html
### PDM
```
AMPLITUDE PDM SEQUENCES
0: 0000000000000000000000000000000000000000000000000000000000000000 = 0
1: 0000000011110000000000000000000000000000000000000000000000000000 = 4/64
2: 0000000000001111111100000000000000000000000000000000000000000000 = 8/64
3: 0000000011111111111100000000000000000000000000000000000000000000 = 12/64
4: 0000000000000000000000000000000000001111111111111111000000000000 = 16/64
5: 0000000011110000000000000000000000001111111111111111000000000000 = 20/64
6: 0000000000001111111100000000000000001111111111111111000000000000 = 24/64
7: 0000000011111111111100000000000000001111111111111111000000000000 = 28/64
8: 1111000000000000000011111111111111110000000000000000111111111111 = 32/64
9: 1111000011110000000011111111111111110000000000000000111111111111 = 36/64
10: 1111000000001111111111111111111111110000000000000000111111111111 = 40/64
11: 1111000011111111111111111111111111110000000000000000111111111111 = 44/64
12: 1111000000000000000011111111111111111111111111111111111111111111 = 48/64
13: 1111000011110000000011111111111111111111111111111111111111111111 = 52/64
14: 1111000000001111111111111111111111111111111111111111111111111111 = 56/64
15: 1111000011111111111111111111111111111111111111111111111111111111 = 60/64
ENVELOPE PDM SEQUENCES
0: 0000000000000000000000000000000000000000000000000000000000000000 = 0/64
1: 0000000000001000000000000000100000000000000010000000000000001000 = 4/64
2: 0000010000000100000001000000010000000100000001000000010000000100 = 8/64
3: 0000010000001100000001000000110000000100000011000000010000001100 = 12/64
4: 0011000000110000001100000011000000110000001100000011000000110000 = 16/64
5: 0011000000111000001100000011100000110000001110000011000000111000 = 20/64
6: 0011010000110100001101000011010000110100001101000011010000110100 = 24/64
7: 0011010000111100001101000011110000110100001111000011010000111100 = 28/64
8: 1100001111000011110000111100001111000011110000111100001111000011 = 32/64
9: 1100001111001011110000111100101111000011110010111100001111001011 = 36/64
10: 1100011111000111110001111100011111000111110001111100011111000111 = 40/64
11: 1100011111001111110001111100111111000111110011111100011111001111 = 44/64
12: 1111001111110011111100111111001111110011111100111111001111110011 = 48/64
13: 1111001111111011111100111111101111110011111110111111001111111011 = 52/64
14: 1111011111110111111101111111011111110111111101111111011111110111 = 56/64
15: 1111011111111111111101111111111111110111111111111111011111111111 = 60/64
```
### Noise
```
SAA1099P noise generator as documented by Jepael
seed unknown, must be non-zero
18-bit Galois LFSR
Feedback polynomial = x^18 + x^11 + x^1
Period = 2^18-1 = 262143 bits
Verified to match recorded noise from my SAA1099P
```
### Octaves
Apparently that makes the noisegen to be clocked by the undivided octave clock, so lowest octave 0 is same as rate X. And each octave higher doubles the noise frequency.
### Notes
```
B 5
C 33
C# 60
D 85
D# 109
E 132
F 153
F# 173
G 192
G# 210
A 227
A# 243
```
## Implementations
* MAME https://github.com/mamedev/mame/blob/master/src/devices/sound/saa1099.cpp
* Unreal emu, seems to be identical to MAME https://github.com/tslabs/zx-evo/blob/master/pentevo/unreal/Unreal/saa1099.cpp
* System Verilog for MIST Board https://github.com/sorgelig/SAMCoupe_MIST/blob/master/saa1099.sv
* C https://github.com/stripwax/SAASound
* Play MIDI on Arduino with SAA1099: https://github.com/Bobcatmodder/SAATunes
* https://github.com/SudoMaker/RetroWave
# What is Tiny Tapeout?
TinyTapeout is an educational project that aims to make it easier and cheaper than ever to get your digital designs manufactured on a real chip.
To learn more and get started, visit https://tinytapeout.com.
## Verilog Projects
Edit the [info.yaml](https://github.com/rejunity/tt06-psg-saa1099/blob/master/info.yaml) and uncomment the `source_files` and `top_module` properties, and change the value of `language` to "Verilog". Add your Verilog files to the `src` folder, and list them in the `source_files` property.
The GitHub action will automatically build the ASIC files using [OpenLane](https://github.com/rejunity/tt06-psg-saa1099/blob/master/https://www.zerotoasiccourse.com/terminology/openlane/).
## How to enable the GitHub actions to build the ASIC files
Please see the instructions for:
- [Enabling GitHub Actions](https://github.com/rejunity/tt06-psg-saa1099/blob/master/https://tinytapeout.com/faq/#when-i-commit-my-change-the-gds-action-isnt-running)
- [Enabling GitHub Pages](https://github.com/rejunity/tt06-psg-saa1099/blob/master/https://tinytapeout.com/faq/#my-github-action-is-failing-on-the-pages-part)
## Resources
- [FAQ](https://github.com/rejunity/tt06-psg-saa1099/blob/master/https://tinytapeout.com/faq/)
- [Digital design lessons](https://github.com/rejunity/tt06-psg-saa1099/blob/master/https://tinytapeout.com/digital_design/)
- [Learn how semiconductors work](https://github.com/rejunity/tt06-psg-saa1099/blob/master/https://tinytapeout.com/siliwiz/)
- [Join the community](https://github.com/rejunity/tt06-psg-saa1099/blob/master/https://discord.gg/rPK2nSjxy8)
## What next?
- Submit your design to the next shuttle [on the website](https://github.com/rejunity/tt06-psg-saa1099/blob/master/https://tinytapeout.com/#submit-your-design). The closing date is **November 4th**.
- Edit this [README](https://github.com/rejunity/tt06-psg-saa1099/blob/master/README.md) and explain your design, how it works, and how to test it.
- Share your GDS on your social network of choice, tagging it #tinytapeout and linking Matt's profile:
- LinkedIn [#tinytapeout](https://github.com/rejunity/tt06-psg-saa1099/blob/master/https://www.linkedin.com/search/results/content/?keywords=%23tinytapeout) [matt-venn](https://github.com/rejunity/tt06-psg-saa1099/blob/master/https://www.linkedin.com/in/matt-venn/)
- Mastodon [#tinytapeout](https://github.com/rejunity/tt06-psg-saa1099/blob/master/https://chaos.social/tags/tinytapeout) [@matthewvenn](https://github.com/rejunity/tt06-psg-saa1099/blob/master/https://chaos.social/@matthewvenn)
- Twitter [#tinytapeout](https://github.com/rejunity/tt06-psg-saa1099/blob/master/https://twitter.com/hashtag/tinytapeout?src=hashtag_click) [@matthewvenn](https://github.com/rejunity/tt06-psg-saa1099/blob/master/https://twitter.com/matthewvenn)
近期下载者:
相关文件:
收藏者: