We can update you automatically when this page changes.
To receive regular notification of updates to our Model of the
Month section, click here.
In many communications environments it is desirable to spread the signal across as much of the allocated frequency spectrum as possible. This is usually done for one of three reasons:
This months Model is essentially a finite state machine (FSM) that generates an oversampling signal from the binary data stream in a digital communications system, for example, a wireless LAN. The FSM generates a codeword according to the gain required of the system, in this case a factor of 12 is needed. The codeword modifies the binary data stream in order to increase the effective data rate, for example:
1 -> 101101001010
0 -> 010010110101
There are a variety of solutions to implementing this increase in data rate. One solution is to use a shift register running at 12x the original data rate, but this requires a large number of registers. The most compact solution that we found was to implement a 12-state state machine. The key to minimizing the hardware is simply the ability to recognise patterns in the state vector registers output sequence (remember that patterns analysis was also used to minimize the hardware in the scaler Model).
A both-edges FSM implemented as two separate FSMs has the advantage of reducing the operating frequency of the design. The two FSMs must be coded as two separate processes for synthesis. In addition, the fsm_toggle process which is clocked from the output of the negative-edge clocked FSM must also be coded in a separate process for synthesis.
The spectrum spreader is implemented as a FSM to mimimize the amount of hardware. Once again, we find that hardware design skills plus a comprehensive knowledge of coding VHDL for synthesis are required to achieve the best design. Shown below is the RTL schedule or timing diagram (call it what you will) for the both_edges architecture.
You are welcome to use the source code we provide but you must keep the copyright notice with the code (see the Acknowledgements page for more details).
-- Spectrum Spreader -- -- +-----------------------------+ -- | Copyright 1997 DOULOS | -- | Library: RadioComms | -- | designer : Tim Pagden | -- | opened: 08 Apr 1997 | -- +-----------------------------+ -- Architectures: -- 08.04.97 both_edges architecture both_edges of spectrum_spreader is signal state_pos : std_ulogic; signal state_neg : std_ulogic; signal state_toggle : std_ulogic; begin SVR_pos : process (clock, reset) -- this flip-flop toggles when state_neg is 1 during state_toggle HIGH -- but then toggles on each clock when state_toggle is LOW begin if reset = '1' then state_pos <= '0'; elsif clock'event and clock='1' then if state_toggle = '1' then if state_neg = '1' then state_pos <= not state_pos; end if; else -- state_toggle = '0' state_pos <= not state_pos; end if; end if; end process; SVR_neg : process (clock, reset) -- this is simply a toggle flip-flop with reset begin if reset = '1' then state_neg <= '0'; elsif clock'event and clock='0' then state_neg <= not state_neg; end if; end process; fsm_toggle : process (state_neg, reset) -- toggles on the +ve edge of state_neg when state_pos LOW begin if reset = '1' then state_toggle <= '0'; elsif state_neg'event and state_neg='1' then if state_pos = '0' then state_toggle <= not state_toggle; end if; end if; end process; output: spread_data <= (state_pos xor state_neg) xor RF_data; end both_edges;
ASIC Design and Project
Services
Advanced VHDL Techniques
Doulos Training Courses
Copyright 1995-1997 Doulos
This page was last updated 8th April 1997
We welcome your e-mail comments. Please contact us at: webmaster@doulos.co.uk