28 lines
1.1 KiB
VHDL
28 lines
1.1 KiB
VHDL
|
ARCHITECTURE studentVersion OF sineTable IS
|
||
|
|
||
|
signal phaseTableAddress : unsigned(tableAddressBitNb-1 downto 0);
|
||
|
signal quarterSine : signed(sine'range);
|
||
|
|
||
|
BEGIN
|
||
|
|
||
|
phaseTableAddress <= phase(phase'high-2 downto phase'high-2-tableAddressBitNb+1);
|
||
|
|
||
|
quarterTable: process(phaseTableAddress)
|
||
|
begin
|
||
|
case to_integer(phaseTableAddress) is
|
||
|
when 0 => quarterSine <= to_signed(16#0000#, quarterSine'length);
|
||
|
when 1 => quarterSine <= to_signed(16#18F9#, quarterSine'length);
|
||
|
when 2 => quarterSine <= to_signed(16#30FB#, quarterSine'length);
|
||
|
when 3 => quarterSine <= to_signed(16#471C#, quarterSine'length);
|
||
|
when 4 => quarterSine <= to_signed(16#5A82#, quarterSine'length);
|
||
|
when 5 => quarterSine <= to_signed(16#6A6D#, quarterSine'length);
|
||
|
when 6 => quarterSine <= to_signed(16#7641#, quarterSine'length);
|
||
|
when 7 => quarterSine <= to_signed(16#7D89#, quarterSine'length);
|
||
|
when others => quarterSine <= (others => '-');
|
||
|
end case;
|
||
|
end process quarterTable;
|
||
|
|
||
|
sine <= (others => '0');
|
||
|
|
||
|
END ARCHITECTURE studentVersion;
|