add trigger + shift register + coeff
This commit is contained in:
parent
5c9f884e2f
commit
cf05b0a7f9
@ -1,11 +1,10 @@
|
|||||||
[Concat]
|
|
||||||
[ModelSim]
|
[ModelSim]
|
||||||
SplineInterpolator = $SCRATCH_DIR/SplineInterpolator
|
SplineInterpolator = $SCRATCH_DIR/SplineInterpolator
|
||||||
SplineInterpolator_test = $SCRATCH_DIR/SplineInterpolator_test
|
SplineInterpolator_test = $SCRATCH_DIR/SplineInterpolator_test
|
||||||
WaveformGenerator = $SCRATCH_DIR/WaveformGenerator
|
WaveformGenerator = $SCRATCH_DIR/WaveformGenerator
|
||||||
WaveformGenerator_test = $SCRATCH_DIR/WaveformGenerator_test
|
WaveformGenerator_test = $SCRATCH_DIR/WaveformGenerator_test
|
||||||
[hdl]
|
[hdl]
|
||||||
ieee = $HDS_HOME/hdl_libs/ieee/hdl
|
ieee = $HDS_HOME\hdl_libs\ieee\hdl
|
||||||
SplineInterpolator = $HDS_PROJECT_DIR/../SplineInterpolator/hdl
|
SplineInterpolator = $HDS_PROJECT_DIR/../SplineInterpolator/hdl
|
||||||
SplineInterpolator_test = $HDS_PROJECT_DIR/../SplineInterpolator_test/hdl
|
SplineInterpolator_test = $HDS_PROJECT_DIR/../SplineInterpolator_test/hdl
|
||||||
std = $HDS_HOME/hdl_libs/std/hdl
|
std = $HDS_HOME/hdl_libs/std/hdl
|
||||||
|
@ -1,7 +1,27 @@
|
|||||||
ARCHITECTURE studentVersion OF interpolatorCoefficients IS
|
ARCHITECTURE studentVersion OF interpolatorCoefficients IS
|
||||||
|
|
||||||
|
subtype sample is signed(bitNb-1 DOWNTO 0);
|
||||||
|
subtype coeff is signed(coeffBitNb-1 DOWNTO 0);
|
||||||
|
|
||||||
|
type samples_type is array (1 to 4) of coeff;
|
||||||
|
signal samples: samples_type;
|
||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
a <= (others => '0');
|
-- a = - sample1 +3·sample2 -3·sample3 + sample4
|
||||||
b <= (others => '0');
|
-- b = 2·sample1 -5·sample2 +4·sample3 - sample4
|
||||||
c <= (others => '0');
|
-- c = - sample1 + sample3
|
||||||
d <= (others => '0');
|
-- d = sample2
|
||||||
|
|
||||||
|
process(sample1, sample2, sample3, sample4) begin
|
||||||
|
samples(4) <= resize(sample1, coeff'high+1);
|
||||||
|
samples(3) <= resize(sample2, coeff'high+1);
|
||||||
|
samples(2) <= resize(sample3, coeff'high+1);
|
||||||
|
samples(1) <= resize(sample4, coeff'high+1);
|
||||||
|
end process;
|
||||||
|
|
||||||
|
|
||||||
|
a <= samples(4) - samples(1) + resize( 3*(samples(2) - samples(3)), coeff'high+1);
|
||||||
|
b <= resize(2*samples(1), coeff'high+1) - resize(5*samples(2), coeff'high+1) + resize(4*samples(3), coeff'high+1) - samples(4);
|
||||||
|
c <= samples(3) - samples(1);
|
||||||
|
d <= samples(4);
|
||||||
END ARCHITECTURE studentVersion;
|
END ARCHITECTURE studentVersion;
|
||||||
|
@ -1,7 +1,26 @@
|
|||||||
ARCHITECTURE studentVersion OF interpolatorShiftRegister IS
|
ARCHITECTURE studentVersion OF interpolatorShiftRegister IS
|
||||||
|
|
||||||
|
subtype sample_type is signed(sampleIn'range);
|
||||||
|
type samples_type is array (1 to 4) of sample_type;
|
||||||
|
signal samples: samples_type;
|
||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
sample1 <= (others => '0');
|
|
||||||
sample2 <= (others => '0');
|
process(clock, reset) begin
|
||||||
sample3 <= (others => '0');
|
if reset = '1' then
|
||||||
sample4 <= (others => '0');
|
samples <= (others => (others => '0'));
|
||||||
|
elsif rising_edge(clock) then
|
||||||
|
if shiftSamples then
|
||||||
|
for i in samples_type'low to samples_type'high-1 loop
|
||||||
|
samples(i+1) <= samples(i);
|
||||||
|
end loop;
|
||||||
|
samples(1) <= sampleIn;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
sample1 <= samples(1);
|
||||||
|
sample2 <= samples(2);
|
||||||
|
sample3 <= samples(3);
|
||||||
|
sample4 <= samples(4);
|
||||||
END ARCHITECTURE studentVersion;
|
END ARCHITECTURE studentVersion;
|
||||||
|
@ -1,4 +1,27 @@
|
|||||||
ARCHITECTURE studentVersion OF interpolatorTrigger IS
|
ARCHITECTURE studentVersion OF interpolatorTrigger IS
|
||||||
|
|
||||||
|
signal counter : unsigned(counterBitNb-1 downto 0);
|
||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
triggerOut <= '0';
|
|
||||||
|
process(clock, reset)
|
||||||
|
begin
|
||||||
|
if reset = '1' then
|
||||||
|
counter <= (others => '1');
|
||||||
|
elsif rising_edge(clock) then
|
||||||
|
if en = '1' then
|
||||||
|
counter <= counter - 1;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
process(counter)
|
||||||
|
begin
|
||||||
|
if counter = 0 then
|
||||||
|
triggerOut <= '1';
|
||||||
|
else
|
||||||
|
triggerOut <= '0';
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
END ARCHITECTURE studentVersion;
|
END ARCHITECTURE studentVersion;
|
||||||
|
@ -8,7 +8,7 @@ BEGIN
|
|||||||
|
|
||||||
phaseTableAddress <= phase(phase'high-2 downto phase'high-2-tableAddressBitNb+1);
|
phaseTableAddress <= phase(phase'high-2 downto phase'high-2-tableAddressBitNb+1);
|
||||||
|
|
||||||
sequenceTable: process(phase)
|
sequenceTable: process(phaseTableAddress)
|
||||||
begin
|
begin
|
||||||
if phase(phase'high-1) = '1' then
|
if phase(phase'high-1) = '1' then
|
||||||
phaseTableAddress2 <= 8 - phaseTableAddress;
|
phaseTableAddress2 <= 8 - phaseTableAddress;
|
||||||
@ -30,9 +30,14 @@ BEGIN
|
|||||||
when 7 => quarterSine <= to_signed(16#7D89#, quarterSine'length);
|
when 7 => quarterSine <= to_signed(16#7D89#, quarterSine'length);
|
||||||
when others => quarterSine <= (others => '-');
|
when others => quarterSine <= (others => '-');
|
||||||
end case;
|
end case;
|
||||||
|
if phaseTableAddress2 = 0 then
|
||||||
|
if phase(phase'high-1) = '1' then
|
||||||
|
quarterSine <= to_signed(16#7FFF#, quarterSine'length);
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
end process quarterTable;
|
end process quarterTable;
|
||||||
|
|
||||||
invert: process(quarterSine)
|
invert: process(quarterSine, phase(phase'high))
|
||||||
begin
|
begin
|
||||||
if phase(phase'high) = '1' then
|
if phase(phase'high) = '1' then
|
||||||
sine <= NOT quarterSine;
|
sine <= NOT quarterSine;
|
||||||
@ -40,7 +45,5 @@ BEGIN
|
|||||||
sine <= quarterSine;
|
sine <= quarterSine;
|
||||||
end if;
|
end if;
|
||||||
end process invert;
|
end process invert;
|
||||||
|
|
||||||
--sine <= quarterSine;
|
|
||||||
|
|
||||||
END ARCHITECTURE studentVersion;
|
END ARCHITECTURE studentVersion;
|
||||||
|
Binary file not shown.
@ -0,0 +1,6 @@
|
|||||||
|
EDIT_LOCK
|
||||||
|
remi.heredero
|
||||||
|
UNKNOWN
|
||||||
|
WE2330808
|
||||||
|
17492
|
||||||
|
08.03.2024-12:51:15.116000
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user