M.A.D.製FPGA評価ボード MFP-CY240Z-B ― 2016年07月24日 12:33
M.A.D.さんよりFPGA評価ボードを購入したので、ソースビルドした際の覚書。
作業マシン Windows10 x64
ソースはHRA! 氏の1chipMSX改 開発最新版(2008/07/12 24:27)を利用。
ビルド及び書き込みには
Quartus II 10.1sp1 Web Edition
を利用。
1・USBBlasterのWindows10x64用のドライバ
Quartus II 10.1sp1 Web Editionには64ビット版のドライバが含まれていないので
Quartus Prime Lite Edition 16をセットアップし入手。
2・ソース修正
ビルド時にエラーが発生するので以下を修正
one_chip_msx_board\sdram_controller\sdram_ctrl.vhd
40行目
sound\opll\vm2413\vm2413.vhd
52行目
68行目
作業マシン Windows10 x64
ソースはHRA! 氏の1chipMSX改 開発最新版(2008/07/12 24:27)を利用。
ビルド及び書き込みには
Quartus II 10.1sp1 Web Edition
を利用。
1・USBBlasterのWindows10x64用のドライバ
Quartus II 10.1sp1 Web Editionには64ビット版のドライバが含まれていないので
Quartus Prime Lite Edition 16をセットアップし入手。
2・ソース修正
ビルド時にエラーが発生するので以下を修正
one_chip_msx_board\sdram_controller\sdram_ctrl.vhd
40行目
PORT( MEMCLK : IN STD_LOGIC; -- SD-RAM CLOCK -- CPU INTERFACE↓
PORT( RESET : IN STD_LOGIC; MEMCLK : IN STD_LOGIC; -- SD-RAM CLOCK -- CPU INTERFACE
sound\opll\vm2413\vm2413.vhd
52行目
function CONV_REGS_VECTOR ( inst : REGS_TYPE ) return REGS_VECTOR_TYPE; function CONV_REGS ( inst_vec : REGS_VECTOR_TYPE ) return REGS_TYPE;↓
function CONV_REGS_VECTOR ( regs : REGS_TYPE ) return REGS_VECTOR_TYPE; function CONV_REGS ( vec : REGS_VECTOR_TYPE ) return REGS_TYPE;
68行目
function CONV_VOICE_VECTOR ( voice : VOICE_TYPE ) return VOICE_VECTOR_TYPE; function CONV_VOICE ( vector : VOICE_VECTOR_TYPE ) return VOICE_TYPE;↓
function CONV_VOICE_VECTOR ( inst : VOICE_TYPE ) return VOICE_VECTOR_TYPE; function CONV_VOICE ( inst_vec : VOICE_VECTOR_TYPE ) return VOICE_TYPE;
M.A.D.製FPGA評価ボード MFP-CY240Z-B その2 ― 2016年07月24日 16:10
音量小さかったのでソース修正
こちらのソースから音量部分のみ移植。
とりあえず音量は大きくなったけど、各音源のボリュームバランスはとれてるのかな?
これでダメなら内部を直接いじってみるか。
音量増加
one_chip_msx_board\emsx_top.vhd
429行目
package\msx_components.vhd
262行目
315行目
sound\mixer\mixer.vhd
65行目
95行目
197行目
211行目
sound\mixer\psg.vhd
58行目
92行目
こちらのソースから音量部分のみ移植。
とりあえず音量は大きくなったけど、各音源のボリュームバランスはとれてるのかな?
これでダメなら内部を直接いじってみるか。
音量増加
one_chip_msx_board\emsx_top.vhd
429行目
SIGNAL PSGAMP : STD_LOGIC_VECTOR(7 DOWNTO 0);↓
SIGNAL PSGAMP : STD_LOGIC_VECTOR(9 DOWNTO 0);
package\msx_components.vhd
262行目
WAVE : OUT STD_LOGIC_VECTOR( 7 DOWNTO 0 )↓
WAVE : OUT STD_LOGIC_VECTOR( 9 DOWNTO 0 )
315行目
PSGAMP : IN STD_LOGIC_VECTOR( 7 DOWNTO 0 );↓
PSGAMP : IN STD_LOGIC_VECTOR( 9 DOWNTO 0 );
sound\mixer\mixer.vhd
65行目
PSGAMP : IN STD_LOGIC_VECTOR( 7 DOWNTO 0 );↓
PSGAMP : IN STD_LOGIC_VECTOR( 9 DOWNTO 0 );
95行目
SIGNAL FF_PREPSG : STD_LOGIC_VECTOR( 8 DOWNTO 0 );↓
SIGNAL FF_PREPSG : STD_LOGIC_VECTOR( 9 DOWNTO 0 );
197行目
WITH MSTRVOL SELECT W_SCC_SFT <= W_S( 15 DOWNTO 14 ) & W_SCC( 18 DOWNTO 5 ) WHEN "000", W_S( 15 DOWNTO 13 ) & W_SCC( 18 DOWNTO 6 ) WHEN "001", W_S( 15 DOWNTO 12 ) & W_SCC( 18 DOWNTO 7 ) WHEN "010", W_S( 15 DOWNTO 11 ) & W_SCC( 18 DOWNTO 8 ) WHEN "011", W_S( 15 DOWNTO 10 ) & W_SCC( 18 DOWNTO 9 ) WHEN "100", W_S( 15 DOWNTO 9 ) & W_SCC( 18 DOWNTO 10 ) WHEN "101", W_S( 15 DOWNTO 8 ) & W_SCC( 18 DOWNTO 11 ) WHEN "110", W_S( 15 DOWNTO 7 ) & W_SCC( 18 DOWNTO 12 ) WHEN "111", (OTHERS => 'X') WHEN OTHERS;↓
WITH MSTRVOL SELECT W_SCC_SFT <= W_SCC( 18 DOWNTO 3 ) WHEN "000", W_S( 15 ) & W_SCC( 18 DOWNTO 4 ) WHEN "001", W_S( 15 DOWNTO 14 ) & W_SCC( 18 DOWNTO 5 ) WHEN "010", W_S( 15 DOWNTO 13 ) & W_SCC( 18 DOWNTO 6 ) WHEN "011", W_S( 15 DOWNTO 12 ) & W_SCC( 18 DOWNTO 7 ) WHEN "100", W_S( 15 DOWNTO 11 ) & W_SCC( 18 DOWNTO 8 ) WHEN "101", W_S( 15 DOWNTO 10 ) & W_SCC( 18 DOWNTO 9 ) WHEN "110", W_S( 15 DOWNTO 9 ) & W_SCC( 18 DOWNTO 10 ) WHEN "111", (OTHERS => 'X') WHEN OTHERS;
211行目
IF( CLK21M'EVENT AND CLK21M = '1' )THEN FF_PREPSG <= (('0' & PSGAMP ) + (KEYCLICK & "00000")); FF_PRESCC <= ((SCC1AMPL(14) & SCC1AMPL) + (SCC2AMPL(14) & SCC2AMPL)); FF_PSG <= "000" & SHR( (FF_PREPSG * PSGVOL) & "0", MSTRVOL ); FF_SCC <= W_SCC_SFT; IF( OPLLAMP < C_OPLL_ZERO )THEN CHAMP := "00" & SHR( ((C_OPLL_ZERO - OPLLAMP) * OPLLVOL) & "0", MSTRVOL ); FF_OPLL <= C_AMP_OFFSET - ( CHAMP - CHAMP( 15 DOWNTO 3 ) ); ELSE CHAMP := "00" & SHR( ((OPLLAMP - C_OPLL_ZERO) * OPLLVOL) & "0", MSTRVOL ); FF_OPLL <= C_AMP_OFFSET + ( CHAMP - CHAMP( 15 DOWNTO 3 ) ); END IF; END IF;↓
IF( CLK21M'EVENT AND CLK21M = '1' )THEN FF_PREPSG <= (PSGAMP + (KEYCLICK & "000000")); FF_PRESCC <= ((SCC1AMPL(14) & SCC1AMPL) + (SCC2AMPL(14) & SCC2AMPL)); FF_PSG <= "0" & SHR( (FF_PREPSG * ("0" & PSGVOL)) & "0", MSTRVOL ); FF_SCC <= W_SCC_SFT; IF( OPLLAMP < C_OPLL_ZERO )THEN CHAMP := SHR(((C_OPLL_ZERO - OPLLAMP) * OPLLVOL) & "000", MSTRVOL ); FF_OPLL <= C_AMP_OFFSET - ( CHAMP - CHAMP( 15 DOWNTO 3 ) ); ELSE chAmp := SHR(((OpllAmp - c_opll_zero) * OpllVol) & "000", MSTRVOL ); FF_OPLL <= C_AMP_OFFSET + ( CHAMP - CHAMP( 15 DOWNTO 3 ) ); END IF; END IF;
sound\mixer\psg.vhd
58行目
WAVE : OUT STD_LOGIC_VECTOR( 7 DOWNTO 0 )↓
WAVE : OUT STD_LOGIC_VECTOR( 9 DOWNTO 0 )
92行目
WAVE <= W_WAVE( 9 DOWNTO 2 )↓
WAVE <= W_WAVE
最近のコメント