04-03-2019, 09:13 AM
(This post was last modified: 04-03-2019, 09:29 AM by ppppenguin.)
The vision carrier is definitely 45.5MHz on Ch1. See attached screenshot from my spectrum analyser. Ch2 is correct at 51.75MHz. i haven't checked others. Sound carrier correct on both channels.
Definitely needs to be fixed. Would be a lot easier to read the settings in i2C_com.vhd if the constants were in hex, not binary. I think I've translated this correctly:
constant CH1_CF_DATA : ic2_data_array := ( X"3D00", X"B380", X"3980", X"D380");
I know some of the values are specified bitwise but looking at strings of 16 bits makes your eyes go funny. I think the newest version of VHDL allows you to put separators in a binary value 0000_0101_1011 or something like this but I don't think the version we're using allows this.
Looking at the modulator data sheet I think I'd be specifiying these constants differently altogether. For example there is a 12 bit value to specifiy the carrier frequency. I might well say something like:
constant CARRIER_FREQ_CH1 : std_logic_vector(11 downto 0) : conv_std_logic_vector(47,11);
This clearly shows the number in decimal. Then concatenate the bits and pieces to make CH1_CF_DATA etc
I haven't tried to put the bits in the correct places but you only have to get this right once.
constant CH1_CF_DATA : ic2_data_array := ( xxxx & CARRIER_FREQ_CH1 (4 downto 0) & yyy) etc etc
Definitely needs to be fixed. Would be a lot easier to read the settings in i2C_com.vhd if the constants were in hex, not binary. I think I've translated this correctly:
constant CH1_CF_DATA : ic2_data_array := ( X"3D00", X"B380", X"3980", X"D380");
I know some of the values are specified bitwise but looking at strings of 16 bits makes your eyes go funny. I think the newest version of VHDL allows you to put separators in a binary value 0000_0101_1011 or something like this but I don't think the version we're using allows this.
Looking at the modulator data sheet I think I'd be specifiying these constants differently altogether. For example there is a 12 bit value to specifiy the carrier frequency. I might well say something like:
constant CARRIER_FREQ_CH1 : std_logic_vector(11 downto 0) : conv_std_logic_vector(47,11);
This clearly shows the number in decimal. Then concatenate the bits and pieces to make CH1_CF_DATA etc
I haven't tried to put the bits in the correct places but you only have to get this right once.
constant CH1_CF_DATA : ic2_data_array := ( xxxx & CARRIER_FREQ_CH1 (4 downto 0) & yyy) etc etc
www.borinsky.co.uk Jeffrey Borinsky www.becg.tv







