Giter Club home page Giter Club logo

speech256's Introduction

Speech256

An FPGA implementation of a classic 80ies speech synthesizer in Verilog.

Introduction

  • Platform agnostic implementation.

IMAGE ALT TEXT HERE

Building

In order to build the FPGA bit stream for the Digitent DE0 board, you need Quartus II 13.1. If you have a different FPGA board, use the tools provided with that board but be aware the project will need to be adapted.

FPGA requirements

  • 4 K ROM

Quartus II 13.1 synthesis results (Digilent DE0 board):

Flow Status	Successful - Thu Oct 26 16:47:44 2017
Quartus II 64-Bit Version	13.1.0 Build 162 10/23/2013 SJ Web Edition
Revision Name	Speech256_DE0
Top-level Entity Name	Speech256_DE0
Family	Cyclone III
Device	EP3C16F484C6
Timing Models	Final
Total logic elements	657 / 15,408 ( 4 % )
Total combinational functions	571 / 15,408 ( 4 % )
Dedicated logic registers	484 / 15,408 ( 3 % )
Total registers	484
Total pins	21 / 347 ( 6 % )
Total virtual pins	0
Total memory bits	32,868 / 516,096 ( 6 % )
Embedded Multiplier 9-bit elements	0 / 112 ( 0 % )
Total PLLs	0 / 4 ( 0 % )

Description of blocks

SPMUL

A serial/parallel multiplier with one 10-bit sign-magnitude and one 2's complement 16-bit input. The 10-bit input range represents -1 .. 1.

SOURCE

The source consists of a LFSR noise generator and a pulse generator with a settable period/duration.

FILTER

A 12-pole filter engine that takes 12 10-bit sign-magnitude filter coefficients and a 16-bit input. The 12-pole filter is built from second-order sections, each having coefficients A1 and A2. Each filter coefficient has a range of -1 .. 1.

The second-order filter transfer function is H(z) = 1 / (1 - 2 * A1 * z^-1 - A2 * z^-2).

CONTROLLER

The controller reads the allophones from the control bus and generates the necessary signals to drive the source and filter blocks. The parameters for the source and filter are encoded in a 4K ROM by means of high-level instructions.

More technical stuff

For more information on how this system works, see http://www.cpcwiki.eu/index.php/SP0256#Technical and http://spatula-city.org/~im14u2c/intv/tech/sp0256_instr_set.html.

License

GPLv3. Please see the LICENSE file.

This project was done during the Retro Challenge 2017/10 contest.
Retrochallenge

speech256's People

Contributors

trcwm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

speech256's Issues

blocking assignments

Thanks for making this project. I have it working on a DE0-Nano - Cyclone IV - EP4CE22F17C6.

I changed the following: I used IP_TOOL_NAME "ALTPLL" for the clock so I had it divide down the 50Mhz to 2.5Mhz.

The project worked fine. I noticed that in the "always @()" blocks you are using "<=". It is my understand that in an "always @()" block only "=" should be used (?). In fact, the reference (Cummings) you mentioned says:

"Guideline #3: When modeling combinational logic with an always block, use blocking assignments"

So, I when through all the code and mass changed the "<=" to "=" in those "always @(*)" blocks. The result is: it sounds the same.

Also, in controller.v, I placed a "coeff_out = 0;" in the "always @(*)" to prevent a latch warning.

original roms?

Hi. i am playing with your syntetizer and was wondering if is possible to change the rom to the original chip.

is there any chance?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.