Revision 70
Added by markw about 11 years ago
mist/atari800core.qsf | ||
---|---|---|
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top
|
||
|
||
set_global_assignment -name VHDL_FILE data_io.vhdl
|
||
set_global_assignment -name VHDL_FILE zpu_rom.vhdl
|
||
set_global_assignment -name SDC_FILE atari800core.sdc
|
||
set_global_assignment -name QIP_FILE mist_sector_buffer.qip
|
||
set_global_assignment -name VHDL_FILE atari800core_mist.vhd
|
mist/atari800core_mist.vhd | ||
---|---|---|
---------------------------------------------------------------------------
|
||
-- (c) 2013 mark watson
|
||
--------------------------------------------------------------------------- -- (c) 2013 mark watson
|
||
-- I am happy for anyone to use this for non-commercial use.
|
||
-- If my vhdl files are used commercially or otherwise sold,
|
||
-- please contact me for explicit permission at scrameta (gmail).
|
||
... | ... | |
CORE_TYPE : in std_logic_vector(7 downto 0);
|
||
JOY0 : out std_logic_vector(5 downto 0);
|
||
JOY1 : out std_logic_vector(5 downto 0);
|
||
KEYBOARD : out std_logic_vector(127 downto 0);
|
||
BUTTONS : out std_logic_vector(1 downto 0);
|
||
SWITCHES : out std_logic_vector(1 downto 0)
|
||
SWITCHES : out std_logic_vector(1 downto 0);
|
||
CLK : in std_logic;
|
||
PS2_CLK : out std_logic;
|
||
PS2_DATA : out std_logic
|
||
);
|
||
end component;
|
||
|
||
|
||
|
||
signal AUDIO_L_PCM : std_logic_vector(15 downto 0);
|
||
signal AUDIO_R_PCM : std_logic_vector(15 downto 0);
|
||
|
||
... | ... | |
signal CLK : std_logic;
|
||
signal CLK_SDRAM : std_logic;
|
||
|
||
signal keyboard : std_logic_vector(127 downto 0);
|
||
signal atari_keyboard : std_logic_vector(63 downto 0);
|
||
|
||
SIGNAL SHIFT_PRESSED : STD_LOGIC;
|
||
SIGNAL BREAK_PRESSED : STD_LOGIC;
|
||
SIGNAL CONTROL_PRESSED : STD_LOGIC;
|
||
|
||
SIGNAL PS2_CLK : std_logic;
|
||
SIGNAL PS2_DAT : std_logic;
|
||
SIGNAL CONSOL_OPTION : STD_LOGIC;
|
||
SIGNAL CONSOL_SELECT : STD_LOGIC;
|
||
SIGNAL CONSOL_START : STD_LOGIC;
|
||
SIGNAL FKEYS : std_logic_vector(11 downto 0);
|
||
|
||
signal capslock_pressed : std_logic;
|
||
signal capsheld_next : std_logic;
|
||
... | ... | |
signal mist_sector_ready_sync : std_logic;
|
||
signal mist_sector_request : std_logic;
|
||
signal mist_sector_request_sync : std_logic;
|
||
signal mist_sector : std_logic_vector(31 downto 0);
|
||
signal mist_sector_sync : std_logic_vector(31 downto 0);
|
||
signal mist_sector_write : std_logic;
|
||
signal mist_sector_write_sync : std_logic;
|
||
signal mist_sector : std_logic_vector(23 downto 0);
|
||
signal mist_sector_sync : std_logic_vector(23 downto 0);
|
||
|
||
|
||
signal mist_addr : std_logic_vector(8 downto 0);
|
||
... | ... | |
SIGNAL KEYBOARD_RESPONSE : STD_LOGIC_VECTOR(1 DOWNTO 0);
|
||
SIGNAL KEYBOARD_SCAN : STD_LOGIC_VECTOR(5 DOWNTO 0);
|
||
|
||
SIGNAL THROTTLE_COUNT_6502 : STD_LOGIC_VECTOR(5 DOWNTO 0);
|
||
|
||
SIGNAL PAL : std_logic;
|
||
|
||
signal SDRAM_REQUEST : std_logic;
|
||
... | ... | |
|
||
signal SDRAM_REFRESH : std_logic;
|
||
|
||
signal SYSTEM_RESET_REQUEST: std_logic;
|
||
|
||
signal SDRAM_RESET_N : std_logic;
|
||
|
||
-- dma/virtual drive
|
||
signal DMA_ADDR_FETCH : std_logic_vector(23 downto 0);
|
||
signal DMA_WRITE_DATA : std_logic_vector(31 downto 0);
|
||
signal DMA_FETCH : std_logic;
|
||
signal DMA_32BIT_WRITE_ENABLE : std_logic;
|
||
signal DMA_16BIT_WRITE_ENABLE : std_logic;
|
||
signal DMA_8BIT_WRITE_ENABLE : std_logic;
|
||
signal DMA_READ_ENABLE : std_logic;
|
||
signal DMA_MEMORY_READY : std_logic;
|
||
signal DMA_MEMORY_DATA : std_logic_vector(31 downto 0);
|
||
|
||
signal ZPU_ADDR_ROM : std_logic_vector(15 downto 0);
|
||
signal ZPU_ROM_DATA : std_logic_vector(31 downto 0);
|
||
|
||
signal ZPU_OUT1 : std_logic_vector(31 downto 0);
|
||
signal ZPU_OUT2 : std_logic_vector(31 downto 0);
|
||
signal ZPU_OUT3 : std_logic_vector(31 downto 0);
|
||
signal ZPU_OUT4 : std_logic_vector(31 downto 0);
|
||
|
||
signal zpu_pokey_enable : std_logic;
|
||
signal zpu_sio_txd : std_logic;
|
||
signal zpu_sio_rxd : std_logic;
|
||
signal zpu_sio_command : std_logic;
|
||
|
||
-- system control from zpu
|
||
signal ram_select : std_logic_vector(2 downto 0);
|
||
signal rom_select : std_logic_vector(5 downto 0);
|
||
signal reset_atari : std_logic;
|
||
signal pause_atari : std_logic;
|
||
SIGNAL speed_6502 : std_logic_vector(5 downto 0);
|
||
|
||
-- mist sector
|
||
signal ZPU_ROM_DATA_MUX : std_logic_vector(31 downto 0);
|
||
signal ZPU_SECTOR_DATA : std_logic_vector(31 downto 0);
|
||
signal ZPU_ROM_DO : std_logic_vector(31 downto 0);
|
||
signal ZPU_ROM_WREN : std_logic;
|
||
|
||
-- ps2
|
||
signal SLOW_PS2_CLK : std_logic; -- around 16KHz
|
||
|
||
BEGIN
|
||
pal <= '1'; -- TODO, two builds, with appropriate pll settings
|
||
|
||
... | ... | |
SPI_MOSI => spi_di,
|
||
|
||
-- Sector access request
|
||
request => mist_sector_request_sync,
|
||
read_request => mist_sector_request_sync,
|
||
write_request => mist_sector_write_sync,
|
||
--request => mist_sector_request_sync,
|
||
sector => mist_sector_sync(23 downto 0),
|
||
ready => mist_sector_ready,
|
||
|
||
... | ... | |
select_sync2 : entity work.synchronizer
|
||
PORT MAP ( CLK => spi_sck, raw => mist_sector_request, sync=>mist_sector_request_sync);
|
||
|
||
select_sync3 : entity work.synchronizer
|
||
PORT MAP ( CLK => spi_sck, raw => mist_sector_write, sync=>mist_sector_write_sync);
|
||
|
||
sector_sync0 : entity work.synchronizer
|
||
PORT MAP ( CLK => spi_sck, raw => mist_sector(0), sync=>mist_sector_sync(0));
|
||
|
||
... | ... | |
PORT map
|
||
(
|
||
address_a => mist_addr,
|
||
address_b => "0000000", -- TODO - need to expose a 2nd dma channel of some kind, so we don't have to halt 6502 to access sector buffer! ZPU_ADDR_ROM_RAM(8 DOWNTO 2),
|
||
address_b => zpu_addr_rom(8 downto 2),
|
||
clock_a => spi_sck,
|
||
clock_b => clk,
|
||
data_a => mist_do,
|
||
data_b => X"00000000", -- TODO zpu_do,
|
||
data_b => dma_write_data(7 downto 0)&dma_write_data(15 downto 8)&dma_write_data(23 downto 16)&dma_write_data(31 downto 24),
|
||
wren_a => mist_wren,
|
||
wren_b => '0',
|
||
wren_b => zpu_rom_wren,
|
||
q_a => mist_di,
|
||
q_b => open -- TODO zpu_sector_data
|
||
q_b => zpu_sector_data
|
||
);
|
||
|
||
my_user_io : user_io
|
||
... | ... | |
CORE_TYPE => x"A4",
|
||
JOY0 => joy1,
|
||
JOY1 => joy2,
|
||
KEYBOARD => keyboard,
|
||
BUTTONS => mist_buttons,
|
||
SWITCHES => mist_switches
|
||
SWITCHES => mist_switches,
|
||
CLK => SLOW_PS2_CLK,
|
||
PS2_CLK => ps2_clk,
|
||
PS2_DATA => ps2_dat
|
||
);
|
||
|
||
joy1_n <= not(joy1(4 downto 0));
|
||
joy2_n <= not(joy2(4 downto 0));
|
||
|
||
process(clk,reset_n)
|
||
begin
|
||
if (reset_n='0') then
|
||
capsheld_reg <= '0';
|
||
elsif (clk'event and clk='1') then
|
||
capsheld_reg <= capsheld_next;
|
||
end if;
|
||
end process;
|
||
|
||
-- TODO, this doesn't work yet
|
||
process(keyboard,capsheld_reg)
|
||
begin
|
||
capsheld_next <= capsheld_reg;
|
||
capslock_pressed <= '0';
|
||
-- PS2 to pokey
|
||
keyboard_map1 : entity work.ps2_to_atari800
|
||
PORT MAP
|
||
(
|
||
CLK => clk,
|
||
RESET_N => reset_n,
|
||
PS2_CLK => ps2_clk,
|
||
PS2_DAT => ps2_dat,
|
||
|
||
if ((keyboard(58) xor capsheld_reg)='1') then
|
||
capsheld_next <= keyboard(58);
|
||
|
||
-- assert something for 10 frames
|
||
capslock_pressed <= '1';
|
||
end if;
|
||
end process;
|
||
|
||
-- TODO, this is mapping from ST keycode, make mist firmware send PS2 keycodes or USB keycodes if possible
|
||
atari_keyboard(63) <= keyboard(30);
|
||
atari_keyboard(62) <= keyboard(31);
|
||
atari_keyboard(61) <= keyboard(34);
|
||
atari_keyboard(60) <= '0';
|
||
atari_keyboard(58) <= keyboard(32);
|
||
atari_keyboard(57) <= keyboard(35);
|
||
atari_keyboard(56) <= keyboard(33);
|
||
atari_keyboard(55) <= keyboard(13);
|
||
atari_keyboard(54) <= keyboard(12);
|
||
atari_keyboard(53) <= keyboard(9);
|
||
atari_keyboard(52) <= keyboard(14);
|
||
atari_keyboard(51) <= keyboard(8);
|
||
atari_keyboard(50) <= keyboard(11);
|
||
atari_keyboard(48) <= keyboard(10);
|
||
atari_keyboard(47) <= keyboard(16);
|
||
atari_keyboard(46) <= keyboard(17);
|
||
atari_keyboard(45) <= keyboard(20);
|
||
atari_keyboard(44) <= keyboard(15);
|
||
atari_keyboard(43) <= keyboard(21);
|
||
atari_keyboard(42) <= keyboard(18);
|
||
atari_keyboard(40) <= keyboard(19);
|
||
atari_keyboard(39) <= keyboard(56);
|
||
atari_keyboard(38) <= keyboard(53);
|
||
atari_keyboard(37) <= keyboard(50);
|
||
atari_keyboard(35) <= keyboard(49);
|
||
atari_keyboard(34) <= keyboard(52);
|
||
atari_keyboard(33) <= keyboard(57);
|
||
atari_keyboard(32) <= keyboard(51);
|
||
atari_keyboard(31) <= keyboard(2);
|
||
atari_keyboard(30) <= keyboard(3);
|
||
atari_keyboard(29) <= keyboard(6);
|
||
atari_keyboard(28) <= keyboard(1);
|
||
atari_keyboard(27) <= keyboard(7);
|
||
atari_keyboard(26) <= keyboard(4);
|
||
atari_keyboard(24) <= keyboard(5);
|
||
atari_keyboard(23) <= keyboard(44);
|
||
atari_keyboard(22) <= keyboard(45);
|
||
atari_keyboard(21) <= keyboard(48);
|
||
atari_keyboard(18) <= keyboard(46);
|
||
atari_keyboard(17) <= keyboard(59);
|
||
atari_keyboard(16) <= keyboard(47);
|
||
atari_keyboard(15) <= keyboard(27);
|
||
atari_keyboard(14) <= keyboard(26);
|
||
atari_keyboard(13) <= keyboard(23);
|
||
atari_keyboard(12) <= keyboard(28);
|
||
atari_keyboard(11) <= keyboard(22);
|
||
atari_keyboard(10) <= keyboard(25);
|
||
atari_keyboard(8) <= keyboard(24);
|
||
atari_keyboard(7) <= keyboard(41);
|
||
atari_keyboard(6) <= keyboard(40);
|
||
atari_keyboard(5) <= keyboard(37);
|
||
atari_keyboard(2) <= keyboard(39);
|
||
atari_keyboard(1) <= keyboard(36);
|
||
atari_keyboard(0) <= keyboard(38);
|
||
KEYBOARD_SCAN => KEYBOARD_SCAN,
|
||
KEYBOARD_RESPONSE => KEYBOARD_RESPONSE,
|
||
|
||
|
||
shift_pressed <= keyboard(54) or keyboard(42);
|
||
control_pressed <= keyboard(29);
|
||
break_pressed <= keyboard(96); -- TODO - not on st keyboard
|
||
|
||
consol_start <= keyboard(60); --F2
|
||
consol_select <= keyboard(61); --F3
|
||
consol_option <= keyboard(62); -- F4
|
||
CONSOL_START => CONSOL_START,
|
||
CONSOL_SELECT => CONSOL_SELECT,
|
||
CONSOL_OPTION => CONSOL_OPTION,
|
||
|
||
--f5 <= keyboard(63);
|
||
--f6 <= keyboard(64);
|
||
--f7 <= keyboard(65);
|
||
--f8 <= keyboard(66);
|
||
--f9 <= keyboard(67);
|
||
--f10 <= keyboard(68);
|
||
|
||
--HOT KEYS! Connect to ZPU when present...
|
||
--virtual_keys <= keyboard(65)&keyboard(66)&keyboard(67)&keyboard(68);
|
||
SYSTEM_RESET_REQUEST <= keyboard(63);
|
||
|
||
-- TODO this should be common, same for PS2 after mapping...
|
||
process(keyboard_scan, atari_keyboard, control_pressed, shift_pressed, break_pressed)
|
||
begin
|
||
keyboard_response <= (others=>'1');
|
||
|
||
if (atari_keyboard(to_integer(unsigned(not(keyboard_scan)))) = '1') then
|
||
keyboard_response(0) <= '0';
|
||
end if;
|
||
|
||
if (keyboard_scan(5 downto 4)="00" and break_pressed = '1') then
|
||
keyboard_response(1) <= '0';
|
||
end if;
|
||
|
||
if (keyboard_scan(5 downto 4)="10" and shift_pressed = '1') then
|
||
keyboard_response(1) <= '0';
|
||
end if;
|
||
|
||
if (keyboard_scan(5 downto 4)="11" and control_pressed = '1') then
|
||
keyboard_response(1) <= '0';
|
||
end if;
|
||
end process;
|
||
|
||
FKEYS => FKEYS
|
||
);
|
||
|
||
dac_left : hq_dac
|
||
port map
|
||
(
|
||
... | ... | |
dac_out => audio_r
|
||
);
|
||
|
||
-- TODO - mist joystick mapping!
|
||
--GPIO_PORTA_IN <= VIRTUAL_STICKS and (JOY1_n(0)&JOY1_n(1)&JOY1_n(2)&JOY1_n(3)&JOY2_n(0)&JOY2_n(1)&JOY2_n(2)&JOY2_n(3));
|
||
--fire is bit 4...
|
||
|
||
mist_pll : entity work.pll
|
||
PORT MAP(inclk0 => CLOCK_27(0),
|
||
c0 => CLK_SDRAM,
|
||
c1 => CLK,
|
||
c2 => SDRAM_CLK,
|
||
c3 => SLOW_PS2_CLK,
|
||
locked => PLL_LOCKED);
|
||
|
||
reset_n <= PLL_LOCKED;
|
||
|
||
-- THROTTLE
|
||
THROTTLE_COUNT_6502 <= std_logic_vector(to_unsigned(1,6));
|
||
|
||
atarixl_simple_sdram1 : entity work.atari800core_simple_sdram
|
||
GENERIC MAP
|
||
(
|
||
cycle_length => 32,
|
||
internal_rom => 1,
|
||
internal_rom => 0,
|
||
internal_ram => 0,
|
||
video_bits => 6
|
||
)
|
||
PORT MAP
|
||
(
|
||
CLK => CLK,
|
||
RESET_N => RESET_N and SDRAM_RESET_N and not(SYSTEM_RESET_REQUEST),
|
||
RESET_N => RESET_N and SDRAM_RESET_N and not(reset_atari),
|
||
|
||
VIDEO_VS => VGA_VS_RAW,
|
||
VIDEO_HS => VGA_HS_RAW,
|
||
... | ... | |
AUDIO_L => AUDIO_L_PCM,
|
||
AUDIO_R => AUDIO_R_PCM,
|
||
|
||
JOY1_n => JOY1_n,
|
||
JOY2_n => JOY2_n,
|
||
JOY1_n => JOY1_n(4)&JOY1_n(0)&JOY1_n(1)&JOY1_n(2)&JOY1_n(3),
|
||
JOY2_n => JOY2_n(4)&JOY2_n(0)&JOY2_n(1)&JOY2_n(2)&JOY2_n(3),
|
||
|
||
KEYBOARD_RESPONSE => KEYBOARD_RESPONSE,
|
||
KEYBOARD_SCAN => KEYBOARD_SCAN,
|
||
|
||
SIO_COMMAND => open,
|
||
SIO_RXD => '1',
|
||
SIO_TXD => open,
|
||
SIO_COMMAND => zpu_sio_command,
|
||
SIO_RXD => zpu_sio_txd,
|
||
SIO_TXD => zpu_sio_rxd,
|
||
|
||
CONSOL_OPTION => CONSOL_OPTION,
|
||
CONSOL_SELECT => CONSOL_SELECT,
|
||
... | ... | |
SDRAM_32BIT_WRITE_ENABLE => SDRAM_WIDTH_32bit_ACCESS,
|
||
SDRAM_16BIT_WRITE_ENABLE => SDRAM_WIDTH_16bit_ACCESS,
|
||
SDRAM_8BIT_WRITE_ENABLE => SDRAM_WIDTH_8bit_ACCESS,
|
||
SDRAM_REFRESH => SDRAM_REFRESH,
|
||
|
||
DMA_FETCH => '0',
|
||
DMA_READ_ENABLE => '0',
|
||
DMA_32BIT_WRITE_ENABLE => '0',
|
||
DMA_16BIT_WRITE_ENABLE => '0',
|
||
DMA_8BIT_WRITE_ENABLE => '0',
|
||
DMA_ADDR => (others=>'1'),
|
||
DMA_WRITE_DATA => (others=>'1'),
|
||
MEMORY_READY_DMA => open,
|
||
DMA_FETCH => dma_fetch,
|
||
DMA_READ_ENABLE => dma_read_enable,
|
||
DMA_32BIT_WRITE_ENABLE => dma_32bit_write_enable,
|
||
DMA_16BIT_WRITE_ENABLE => dma_16bit_write_enable,
|
||
DMA_8BIT_WRITE_ENABLE => dma_8bit_write_enable,
|
||
DMA_ADDR => dma_addr_fetch,
|
||
DMA_WRITE_DATA => dma_write_data,
|
||
MEMORY_READY_DMA => dma_memory_ready,
|
||
DMA_MEMORY_DATA => dma_memory_data,
|
||
|
||
RAM_SELECT => (others=>'0'),
|
||
ROM_SELECT => "000001",
|
||
RAM_SELECT => ram_select,
|
||
ROM_SELECT => rom_select,
|
||
PAL => PAL,
|
||
HALT => '0',
|
||
THROTTLE_COUNT_6502 => THROTTLE_COUNT_6502
|
||
HALT => pause_atari,
|
||
THROTTLE_COUNT_6502 => speed_6502
|
||
);
|
||
|
||
sdram_adaptor : entity work.sdram_statemachine
|
||
... | ... | |
)
|
||
PORT MAP(CLK_SYSTEM => CLK,
|
||
CLK_SDRAM => CLK_SDRAM,
|
||
RESET_N => RESET_N and not(SYSTEM_RESET_REQUEST),
|
||
RESET_N => RESET_N,
|
||
READ_EN => SDRAM_READ_ENABLE,
|
||
WRITE_EN => SDRAM_WRITE_ENABLE,
|
||
REQUEST => SDRAM_REQUEST,
|
||
... | ... | |
);
|
||
|
||
SDRAM_A(12) <= '0';
|
||
SDRAM_REFRESH <= '0'; -- TODO
|
||
--SDRAM_REFRESH <= '0'; -- TODO
|
||
|
||
-- Until SDRAM enabled... TODO
|
||
--SDRAM_nCS <= '1';
|
||
... | ... | |
VGA_HS <= not(VGA_HS_RAW xor VGA_VS_RAW);
|
||
VGA_VS <= not(VGA_VS_RAW);
|
||
|
||
zpu: entity work.zpucore
|
||
GENERIC MAP
|
||
(
|
||
platform => 1,
|
||
spi_clock_div => 1 -- 28MHz/2. Max for SD cards is 25MHz...
|
||
)
|
||
PORT MAP
|
||
(
|
||
-- standard...
|
||
CLK => CLK,
|
||
RESET_N => RESET_N and sdram_reset_n,
|
||
|
||
-- dma bus master (with many waitstates...)
|
||
ZPU_ADDR_FETCH => dma_addr_fetch,
|
||
ZPU_DATA_OUT => dma_write_data,
|
||
ZPU_FETCH => dma_fetch,
|
||
ZPU_32BIT_WRITE_ENABLE => dma_32bit_write_enable,
|
||
ZPU_16BIT_WRITE_ENABLE => dma_16bit_write_enable,
|
||
ZPU_8BIT_WRITE_ENABLE => dma_8bit_write_enable,
|
||
ZPU_READ_ENABLE => dma_read_enable,
|
||
ZPU_MEMORY_READY => dma_memory_ready,
|
||
ZPU_MEMORY_DATA => dma_memory_data,
|
||
|
||
-- rom bus master
|
||
-- data on next cycle after addr
|
||
ZPU_ADDR_ROM => zpu_addr_rom,
|
||
ZPU_ROM_DATA => zpu_rom_data_mux,
|
||
|
||
ZPU_ROM_WREN => zpu_rom_wren, -- special for mist...
|
||
|
||
-- spi master
|
||
-- not used for mist...
|
||
ZPU_SD_DAT0 => '0',
|
||
ZPU_SD_CLK => open,
|
||
ZPU_SD_CMD => open,
|
||
ZPU_SD_DAT3 => open,
|
||
|
||
-- SIO
|
||
-- Ditto for speaking to Atari, we have a built in Pokey
|
||
ZPU_POKEY_ENABLE => zpu_pokey_enable,
|
||
ZPU_SIO_TXD => zpu_sio_txd,
|
||
ZPU_SIO_RXD => zpu_sio_rxd,
|
||
ZPU_SIO_COMMAND => zpu_sio_command,
|
||
|
||
-- external control
|
||
-- switches etc. sector DMA blah blah.
|
||
ZPU_IN1 => X"00000"&FKEYS,
|
||
ZPU_IN2 => X"00000000",
|
||
ZPU_IN3 => X"00000000",
|
||
ZPU_IN4 => X"000000"&"0000000"&mist_sector_ready_sync,
|
||
|
||
-- ouputs - e.g. Atari system control, halt, throttle, rom select
|
||
ZPU_OUT1 => zpu_out1,
|
||
ZPU_OUT2 => zpu_out2,
|
||
ZPU_OUT3 => zpu_out3,
|
||
ZPU_OUT4 => zpu_out4
|
||
);
|
||
|
||
mist_sector <= zpu_out4(23 downto 0);
|
||
mist_sector_request <= zpu_out4(24);
|
||
mist_sector_write <= zpu_out4(25);
|
||
|
||
pause_atari <= zpu_out1(0);
|
||
reset_atari <= zpu_out1(1);
|
||
speed_6502 <= zpu_out1(7 downto 2);
|
||
ram_select <= zpu_out1(10 downto 8);
|
||
rom_select <= zpu_out1(16 downto 11);
|
||
|
||
zpu_rom1: entity work.zpu_rom
|
||
port map(
|
||
clock => clk,
|
||
address => zpu_addr_rom(13 downto 2),
|
||
q => zpu_rom_data
|
||
);
|
||
|
||
process(zpu_addr_rom, zpu_rom_data, zpu_sector_data)
|
||
begin
|
||
zpu_rom_data_mux <= zpu_rom_data;
|
||
if (zpu_addr_rom(15 downto 14) = "01") then
|
||
zpu_rom_data_mux <= zpu_sector_data(7 downto 0)&zpu_sector_data(15 downto 8)&zpu_sector_data(23 downto 16)&zpu_sector_data(31 downto 24);
|
||
end if;
|
||
end process;
|
||
|
||
enable_179_clock_div_zpu_pokey : entity work.enable_divider
|
||
generic map (COUNT=>32) -- cycle_length
|
||
port map(clk=>clk,reset_n=>reset_n,enable_in=>'1',enable_out=>zpu_pokey_enable);
|
||
|
||
END vhdl;
|
mist/build.sh | ||
---|---|---|
cp data_io.vhdl build
|
||
cp user_io.v build
|
||
cp mist_sector_buffer.* build
|
||
cp zpu_rom.vhdl build
|
||
mkdir build/common
|
||
mkdir build/common/a8core
|
||
mkdir build/common/components
|
||
mkdir build/common/zpu
|
||
cp ../common/a8core/* ./build/common/a8core
|
||
cp ../common/components/* ./build/common/components
|
||
cp ../common/zpu/* ./build/common/zpu
|
||
|
||
cd build
|
||
../makeqsf ../atari800core.qsf ./common/a8core ./common/components
|
||
../makeqsf ../atari800core.qsf ./common/a8core ./common/components ./common/zpu
|
||
|
||
quartus_sh --flow compile atari800core
|
mist/data_io.cmd | ||
---|---|---|
#onerror {resume}
|
||
# GAME
|
||
#=====================
|
||
#run 18871970 ns
|
||
#isim force add {/replay_tb/uut/tpp2/cpu/dd_s} 11111111 -radix bin -cancel 250 ns
|
||
#run 200 ms
|
mist/data_io.vhdl | ||
---|---|---|
SPI_MISO: out std_logic;
|
||
SPI_MOSI : in std_logic;
|
||
|
||
-- Sector access request
|
||
request : in std_logic;
|
||
-- Sector access read_request
|
||
read_request : in std_logic;
|
||
write_request : in std_logic;
|
||
sector : in std_logic_vector(23 downto 0);
|
||
ready : out std_logic;
|
||
|
||
... | ... | |
|
||
signal cnt_next : std_logic_vector(15 downto 0);
|
||
signal cnt_reg : std_logic_vector(15 downto 0);
|
||
|
||
signal data_in_next : std_logic_vector(7 downto 0);
|
||
signal data_in_reg : std_logic_vector(7 downto 0);
|
||
|
||
signal data_out_next : std_logic_vector(7 downto 0);
|
||
signal data_out_reg : std_logic_vector(7 downto 0);
|
||
... | ... | |
signal sector_next : std_logic_vector(23 downto 0);
|
||
signal sector_reg : std_logic_vector(23 downto 0);
|
||
|
||
signal request_next : std_logic;
|
||
signal request_reg : std_logic;
|
||
signal read_request_next : std_logic;
|
||
signal read_request_reg : std_logic;
|
||
|
||
signal write_request_next : std_logic;
|
||
signal write_request_reg : std_logic;
|
||
|
||
signal clk2 : std_logic;
|
||
begin
|
||
process(clk,reset_n)
|
||
clk2 <= clk or spi_ss_io;
|
||
|
||
process(clk2,reset_n,spi_ss_io)
|
||
begin
|
||
if (reset_n = '0') then
|
||
if (spi_ss_io = '1') then
|
||
cnt_reg <= (others=>'0');
|
||
cmd_reg <= (others=>'0');
|
||
wren_reg <= '0';
|
||
elsif (reset_n = '0') then
|
||
cnt_reg <= (others=>'0');
|
||
cmd_reg <= (others=>'0');
|
||
sbuf_reg <= (others=>'0');
|
||
|
||
addr_reg <= (others => '0');
|
||
data_in_reg <= (others => '0');
|
||
data_out_reg <= (others => '0');
|
||
wren_reg <= '0';
|
||
|
||
... | ... | |
|
||
transmit_reg <= (others=>'0');
|
||
|
||
request_reg <= '0';
|
||
read_request_reg <= '0';
|
||
write_request_reg <= '0';
|
||
sector_reg <=(others=>'0');
|
||
elsif (clk'event and clk='1') then
|
||
elsif (clk2'event and clk2='1') then
|
||
cnt_reg <= cnt_next;
|
||
cmd_reg <= cmd_next;
|
||
sbuf_reg <= sbuf_next;
|
||
|
||
addr_reg <= addr_next;
|
||
data_in_reg <= data_in_next;
|
||
data_out_reg <= data_out_next;
|
||
wren_reg <= wren_next;
|
||
|
||
... | ... | |
|
||
transmit_reg <= transmit_next;
|
||
|
||
request_reg <= request_next;
|
||
read_request_reg <= read_request_next;
|
||
write_request_reg <= write_request_next;
|
||
sector_reg <= sector_next;
|
||
end if;
|
||
end process;
|
||
... | ... | |
|
||
-- select_sync : synchronizer
|
||
-- PORT MAP ( CLK => clk, raw => spi_ss_io, sync=>spi_ss_next);
|
||
|
||
data_in_next <= data_in;
|
||
|
||
process(spi_ss_io,cnt_reg, sbuf_reg, transmit_reg, spi_mosi, addr_reg, cmd_reg, sector_reg, request_reg, ready_reg,request,sector)
|
||
process(spi_ss_io,cnt_reg, sbuf_reg, transmit_reg, spi_mosi, addr_reg, cmd_reg, sector_reg, write_request_reg, read_request_reg, ready_reg,read_request,write_request,sector,data_in_reg)
|
||
begin
|
||
cnt_next <= cnt_reg;
|
||
sbuf_next <= sbuf_reg;
|
||
cmd_next <= cmd_reg;
|
||
ready_next <= ready_reg and request; -- stay ready until request cleared (received by other end)
|
||
ready_next <= ready_reg and (read_request or write_request); -- stay ready until read_request cleared (received by other end)
|
||
|
||
transmit_next <= transmit_reg;
|
||
|
||
... | ... | |
addr_next <= addr_reg;
|
||
|
||
sector_next <= sector_reg;
|
||
request_next <= request_reg;
|
||
read_request_next <= read_request_reg;
|
||
write_request_next <= write_request_reg;
|
||
|
||
--- It polls get_status 10 times a second
|
||
--- it uses SPI_SS2 for this
|
||
... | ... | |
|
||
sbuf_next(6 downto 1) <= sbuf_reg(5 downto 0);
|
||
sbuf_next(0) <= SPI_MOSI;
|
||
|
||
if (cnt_reg = X"0000") then
|
||
addr_next <= (others=>'0');
|
||
end if;
|
||
|
||
if (cnt_reg = X"0007") then
|
||
cmd_next(7 downto 1) <= sbuf_reg;
|
||
cmd_next(0) <= SPI_MOSI;
|
||
addr_next <= (others=>'1');
|
||
|
||
sector_next <= sector;
|
||
request_next <= request;
|
||
read_request_next <= read_request;
|
||
write_request_next <= write_request;
|
||
end if;
|
||
|
||
--end if;
|
||
|
||
if (spi_ss_io = '1') then
|
||
cnt_next <= (others=>'0');
|
||
cmd_next <= (others=>'0');
|
||
end if;
|
||
|
||
case cmd_reg is
|
||
when X"50" => --get status
|
||
case cnt_reg is
|
||
... | ... | |
when X"0018" =>
|
||
transmit_next <= sector_reg(7 downto 0);
|
||
when X"0020" =>
|
||
transmit_next <= "1010010"&request_reg; --read request
|
||
transmit_next <= "101001"&write_request_reg&read_request_reg; --read read_request
|
||
when others =>
|
||
-- nothing
|
||
end case;
|
||
when X"51" => --sector read from sd, write it...
|
||
if (cnt_reg = X"0008") then
|
||
addr_next <= (others=>'1');
|
||
end if;
|
||
if (cnt_reg(2 downto 0) = "111") then
|
||
addr_next <= std_logic_vector(unsigned(addr_reg) + 1);
|
||
data_out_next(7 downto 1) <= sbuf_reg;
|
||
data_out_next(0) <= SPI_MOSI;
|
||
wren_next <= request;
|
||
wren_next <= read_request;
|
||
|
||
if (cnt_reg(12) = '1')then
|
||
ready_next <= '1';
|
||
end if;
|
||
end if;
|
||
when X"52" => -- read from write, write to sd
|
||
if (cnt_reg(2 downto 0) = "000") then
|
||
addr_next <= std_logic_vector(unsigned(addr_reg) + 1);
|
||
transmit_next <= data_in_reg;
|
||
|
||
if (cnt_reg(12) = '1')then
|
||
ready_next <= '1';
|
||
end if;
|
||
end if;
|
||
when others =>
|
||
-- nop
|
||
end case;
|
||
end process;
|
||
|
||
-- outputs
|
||
addr <= addr_reg;
|
||
data_out <= data_out_reg;
|
||
wr_en <= wren_reg;
|
||
addr <= addr_next;
|
||
data_out <= data_out_next;
|
||
wr_en <= wren_next;
|
||
|
||
ready <= ready_reg;
|
||
|
mist/data_io.wcfg | ||
---|---|---|
<?xml version="1.0" encoding="UTF-8"?>
|
||
<wave_config>
|
||
<wave_state>
|
||
</wave_state>
|
||
<db_ref_list>
|
||
<db_ref path="data_io.wdb" id="1" type="auto">
|
||
<top_modules>
|
||
<top_module name="data_io_tb" />
|
||
<top_module name="numeric_std" />
|
||
<top_module name="std_logic_1164" />
|
||
<top_module name="std_logic_arith" />
|
||
<top_module name="std_logic_textio" />
|
||
<top_module name="std_logic_unsigned" />
|
||
<top_module name="textio" />
|
||
</top_modules>
|
||
</db_ref>
|
||
</db_ref_list>
|
||
<WVObjectSize size="19" />
|
||
<wvobject fp_name="/data_io_tb/reset_n" type="logic" db_ref_id="1">
|
||
<obj_property name="ElementShortName">reset_n</obj_property>
|
||
<obj_property name="ObjectShortName">reset_n</obj_property>
|
||
</wvobject>
|
||
<wvobject fp_name="/data_io_tb/request" type="logic" db_ref_id="1">
|
||
<obj_property name="ElementShortName">request</obj_property>
|
||
<obj_property name="ObjectShortName">request</obj_property>
|
||
</wvobject>
|
||
<wvobject fp_name="/data_io_tb/write" type="logic" db_ref_id="1">
|
||
<obj_property name="ElementShortName">write</obj_property>
|
||
<obj_property name="ObjectShortName">write</obj_property>
|
||
</wvobject>
|
||
<wvobject fp_name="/data_io_tb/ready" type="logic" db_ref_id="1">
|
||
<obj_property name="ElementShortName">ready</obj_property>
|
||
<obj_property name="ObjectShortName">ready</obj_property>
|
||
</wvobject>
|
||
<wvobject fp_name="/data_io_tb/spi_miso" type="logic" db_ref_id="1">
|
||
<obj_property name="ElementShortName">spi_miso</obj_property>
|
||
<obj_property name="ObjectShortName">spi_miso</obj_property>
|
||
</wvobject>
|
||
<wvobject fp_name="/data_io_tb/spi_mosi" type="logic" db_ref_id="1">
|
||
<obj_property name="ElementShortName">spi_mosi</obj_property>
|
||
<obj_property name="ObjectShortName">spi_mosi</obj_property>
|
||
</wvobject>
|
||
<wvobject fp_name="/data_io_tb/spi_clk" type="logic" db_ref_id="1">
|
||
<obj_property name="ElementShortName">spi_clk</obj_property>
|
||
<obj_property name="ObjectShortName">spi_clk</obj_property>
|
||
</wvobject>
|
||
<wvobject fp_name="/data_io_tb/spi_tx_data" type="array" db_ref_id="1">
|
||
<obj_property name="ElementShortName">spi_tx_data[7:0]</obj_property>
|
||
<obj_property name="ObjectShortName">spi_tx_data[7:0]</obj_property>
|
||
<obj_property name="Radix">HEXRADIX</obj_property>
|
||
</wvobject>
|
||
<wvobject fp_name="/data_io_tb/spi_rx_data" type="array" db_ref_id="1">
|
||
<obj_property name="ElementShortName">spi_rx_data[7:0]</obj_property>
|
||
<obj_property name="ObjectShortName">spi_rx_data[7:0]</obj_property>
|
||
<obj_property name="Radix">HEXRADIX</obj_property>
|
||
</wvobject>
|
||
<wvobject fp_name="/data_io_tb/spi_busy" type="logic" db_ref_id="1">
|
||
<obj_property name="ElementShortName">spi_busy</obj_property>
|
||
<obj_property name="ObjectShortName">spi_busy</obj_property>
|
||
</wvobject>
|
||
<wvobject fp_name="/data_io_tb/spi_enable" type="logic" db_ref_id="1">
|
||
<obj_property name="ElementShortName">spi_enable</obj_property>
|
||
<obj_property name="ObjectShortName">spi_enable</obj_property>
|
||
</wvobject>
|
||
<wvobject fp_name="/data_io_tb/data_io/cmd_reg" type="array" db_ref_id="1">
|
||
<obj_property name="ElementShortName">cmd_reg[7:0]</obj_property>
|
||
<obj_property name="ObjectShortName">cmd_reg[7:0]</obj_property>
|
||
<obj_property name="Radix">HEXRADIX</obj_property>
|
||
</wvobject>
|
||
<wvobject fp_name="/data_io_tb/data_io/cnt_reg" type="array" db_ref_id="1">
|
||
<obj_property name="ElementShortName">cnt_reg[15:0]</obj_property>
|
||
<obj_property name="ObjectShortName">cnt_reg[15:0]</obj_property>
|
||
<obj_property name="Radix">HEXRADIX</obj_property>
|
||
</wvobject>
|
||
<wvobject fp_name="/data_io_tb/data_io/sbuf_reg" type="array" db_ref_id="1">
|
||
<obj_property name="ElementShortName">sbuf_reg[6:0]</obj_property>
|
||
<obj_property name="ObjectShortName">sbuf_reg[6:0]</obj_property>
|
||
<obj_property name="Radix">HEXRADIX</obj_property>
|
||
</wvobject>
|
||
<wvobject fp_name="/data_io_tb/addr" type="array" db_ref_id="1">
|
||
<obj_property name="ElementShortName">addr[8:0]</obj_property>
|
||
<obj_property name="ObjectShortName">addr[8:0]</obj_property>
|
||
<obj_property name="Radix">HEXRADIX</obj_property>
|
||
</wvobject>
|
||
<wvobject fp_name="/data_io_tb/data_out" type="array" db_ref_id="1">
|
||
<obj_property name="ElementShortName">data_out[7:0]</obj_property>
|
||
<obj_property name="ObjectShortName">data_out[7:0]</obj_property>
|
||
<obj_property name="Radix">HEXRADIX</obj_property>
|
||
</wvobject>
|
||
<wvobject fp_name="/data_io_tb/data_in" type="array" db_ref_id="1">
|
||
<obj_property name="ElementShortName">data_in[7:0]</obj_property>
|
||
<obj_property name="ObjectShortName">data_in[7:0]</obj_property>
|
||
<obj_property name="Radix">HEXRADIX</obj_property>
|
||
</wvobject>
|
||
<wvobject fp_name="/data_io_tb/wr_en" type="logic" db_ref_id="1">
|
||
<obj_property name="ElementShortName">wr_en</obj_property>
|
||
<obj_property name="ObjectShortName">wr_en</obj_property>
|
||
</wvobject>
|
||
<wvobject fp_name="/data_io_tb/spi_ss_io" type="array" db_ref_id="1">
|
||
<obj_property name="ElementShortName">spi_ss_io[1:0]</obj_property>
|
||
<obj_property name="ObjectShortName">spi_ss_io[1:0]</obj_property>
|
||
</wvobject>
|
||
</wave_config>
|
mist/pll.bsf | ||
---|---|---|
/*
|
||
WARNING: Do NOT edit the input and output ports in this file in a text
|
||
editor if you plan to continue editing the block that represents it in
|
||
the Block Editor! File corruption is VERY likely to occur.
|
||
*/
|
||
/*
|
||
Copyright (C) 1991-2012 Altera Corporation
|
||
Your use of Altera Corporation's design tools, logic functions
|
||
and other software and tools, and its AMPP partner logic
|
||
functions, and any output files from any of the foregoing
|
||
(including device programming or simulation files), and any
|
||
associated documentation or information are expressly subject
|
||
to the terms and conditions of the Altera Program License
|
||
Subscription Agreement, Altera MegaCore Function License
|
||
Agreement, or other applicable license agreement, including,
|
||
without limitation, that your use is for the sole purpose of
|
||
programming logic devices manufactured by Altera and sold by
|
||
Altera or its authorized distributors. Please refer to the
|
||
applicable agreement for further details.
|
||
*/
|
||
(header "symbol" (version "1.2"))
|
||
(symbol
|
||
(rect 0 0 256 184)
|
||
(text "pll" (rect 122 0 137 16)(font "Arial" (font_size 10)))
|
||
(text "inst" (rect 8 168 25 180)(font "Arial" ))
|
||
(port
|
||
(pt 0 64)
|
||
(input)
|
||
(text "inclk0" (rect 0 0 31 14)(font "Arial" (font_size 8)))
|
||
(text "inclk0" (rect 4 50 29 63)(font "Arial" (font_size 8)))
|
||
(line (pt 0 64)(pt 40 64))
|
||
)
|
||
(port
|
||
(pt 256 64)
|
||
(output)
|
||
(text "c0" (rect 0 0 14 14)(font "Arial" (font_size 8)))
|
||
(text "c0" (rect 240 50 250 63)(font "Arial" (font_size 8)))
|
||
)
|
||
(port
|
||
(pt 256 80)
|
||
(output)
|
||
(text "c1" (rect 0 0 14 14)(font "Arial" (font_size 8)))
|
||
(text "c1" (rect 240 66 248 79)(font "Arial" (font_size 8)))
|
||
)
|
||
(port
|
||
(pt 256 96)
|
||
(output)
|
||
(text "c2" (rect 0 0 14 14)(font "Arial" (font_size 8)))
|
||
(text "c2" (rect 240 82 250 95)(font "Arial" (font_size 8)))
|
||
)
|
||
(port
|
||
(pt 256 112)
|
||
(output)
|
||
(text "locked" (rect 0 0 36 14)(font "Arial" (font_size 8)))
|
||
(text "locked" (rect 221 98 250 111)(font "Arial" (font_size 8)))
|
||
)
|
||
(drawing
|
||
(text "Cyclone III" (rect 194 168 433 347)(font "Arial" ))
|
||
(text "inclk0 frequency: 27.000 MHz" (rect 50 59 223 129)(font "Arial" ))
|
||
(text "Operation Mode: Normal" (rect 50 72 199 155)(font "Arial" ))
|
||
(text "Clk " (rect 51 93 116 197)(font "Arial" ))
|
||
(text "Ratio" (rect 72 93 164 197)(font "Arial" ))
|
||
(text "Ph (dg)" (rect 99 93 227 197)(font "Arial" ))
|
||
(text "DC (%)" (rect 134 93 298 197)(font "Arial" ))
|
||
(text "c0" (rect 54 107 116 225)(font "Arial" ))
|
||
(text "69/16" (rect 72 107 165 225)(font "Arial" ))
|
||
(text "0.00" (rect 105 107 226 225)(font "Arial" ))
|
||
(text "50.00" (rect 138 107 297 225)(font "Arial" ))
|
||
(text "c1" (rect 54 121 115 253)(font "Arial" ))
|
||
(text "69/32" (rect 72 121 165 253)(font "Arial" ))
|
||
(text "0.00" (rect 105 121 226 253)(font "Arial" ))
|
||
(text "50.00" (rect 138 121 297 253)(font "Arial" ))
|
||
(text "c2" (rect 54 135 116 281)(font "Arial" ))
|
||
(text "69/16" (rect 72 135 165 281)(font "Arial" ))
|
||
(text "-100.60" (rect 99 135 227 281)(font "Arial" ))
|
||
(text "50.00" (rect 138 135 297 281)(font "Arial" ))
|
||
(line (pt 0 0)(pt 257 0))
|
||
(line (pt 257 0)(pt 257 185))
|
||
(line (pt 0 185)(pt 257 185))
|
||
(line (pt 0 0)(pt 0 185))
|
||
(line (pt 48 91)(pt 166 91))
|
||
(line (pt 48 104)(pt 166 104))
|
||
(line (pt 48 118)(pt 166 118))
|
||
(line (pt 48 132)(pt 166 132))
|
||
(line (pt 48 146)(pt 166 146))
|
||
(line (pt 48 91)(pt 48 146))
|
||
(line (pt 69 91)(pt 69 146)(line_width 3))
|
||
(line (pt 96 91)(pt 96 146)(line_width 3))
|
||
(line (pt 131 91)(pt 131 146)(line_width 3))
|
||
(line (pt 165 91)(pt 165 146))
|
||
(line (pt 40 48)(pt 207 48))
|
||
(line (pt 207 48)(pt 207 167))
|
||
(line (pt 40 167)(pt 207 167))
|
||
(line (pt 40 48)(pt 40 167))
|
||
(line (pt 255 64)(pt 207 64))
|
||
(line (pt 255 80)(pt 207 80))
|
||
(line (pt 255 96)(pt 207 96))
|
||
(line (pt 255 112)(pt 207 112))
|
||
)
|
||
)
|
||
/*
|
||
WARNING: Do NOT edit the input and output ports in this file in a text
|
||
editor if you plan to continue editing the block that represents it in
|
||
the Block Editor! File corruption is VERY likely to occur.
|
||
*/
|
||
/*
|
||
Copyright (C) 1991-2013 Altera Corporation
|
||
Your use of Altera Corporation's design tools, logic functions
|
||
and other software and tools, and its AMPP partner logic
|
||
functions, and any output files from any of the foregoing
|
||
(including device programming or simulation files), and any
|
||
associated documentation or information are expressly subject
|
||
to the terms and conditions of the Altera Program License
|
||
Subscription Agreement, Altera MegaCore Function License
|
||
Agreement, or other applicable license agreement, including,
|
||
without limitation, that your use is for the sole purpose of
|
||
programming logic devices manufactured by Altera and sold by
|
||
Altera or its authorized distributors. Please refer to the
|
||
applicable agreement for further details.
|
||
*/
|
||
(header "symbol" (version "1.2"))
|
||
(symbol
|
||
(rect 0 0 224 168)
|
||
(text "pll" (rect 106 0 120 11)(font "Arial" (font_size 10)))
|
||
(text "inst" (rect 8 157 22 164)(font "Arial" ))
|
||
(port
|
||
(pt 0 64)
|
||
(input)
|
||
(text "inclk0" (rect 0 0 22 9)(font "Arial" (font_size 8)))
|
||
(text "inclk0" (rect 4 55 21 63)(font "Arial" (font_size 8)))
|
||
(line (pt 0 64)(pt 40 64))
|
||
)
|
||
(port
|
||
(pt 224 64)
|
||
(output)
|
||
(text "c0" (rect 0 0 9 9)(font "Arial" (font_size 8)))
|
||
(text "c0" (rect 212 55 218 63)(font "Arial" (font_size 8)))
|
||
)
|
||
(port
|
||
(pt 224 80)
|
||
(output)
|
||
(text "c1" (rect 0 0 9 9)(font "Arial" (font_size 8)))
|
||
(text "c1" (rect 212 71 218 79)(font "Arial" (font_size 8)))
|
||
)
|
||
(port
|
||
(pt 224 96)
|
||
(output)
|
||
(text "c2" (rect 0 0 9 9)(font "Arial" (font_size 8)))
|
||
(text "c2" (rect 212 87 219 95)(font "Arial" (font_size 8)))
|
||
)
|
||
(port
|
||
(pt 224 112)
|
||
(output)
|
||
(text "c3" (rect 0 0 9 9)(font "Arial" (font_size 8)))
|
||
(text "c3" (rect 212 103 218 111)(font "Arial" (font_size 8)))
|
||
)
|
||
(port
|
||
(pt 224 128)
|
||
(output)
|
||
(text "locked" (rect 0 0 24 9)(font "Arial" (font_size 8)))
|
||
(text "locked" (rect 199 119 219 127)(font "Arial" (font_size 8)))
|
||
)
|
||
(drawing
|
||
(text "Cyclone III" (rect 181 161 394 328)(font "Arial" ))
|
||
(text "inclk0 frequency: 27.000 MHz" (rect 50 71 191 148)(font "Arial" ))
|
||
(text "Operation Mode: Normal" (rect 50 79 175 164)(font "Arial" ))
|
||
(text "Clk " (rect 51 92 112 190)(font "Arial" ))
|
||
(text "Ratio" (rect 74 92 163 190)(font "Arial" ))
|
||
(text "Ph (dg)" (rect 102 92 226 190)(font "Arial" ))
|
||
(text "DC (%)" (rect 129 92 279 190)(font "Arial" ))
|
||
(text "c0" (rect 53 101 112 208)(font "Arial" ))
|
||
(text "69/16" (rect 73 101 162 208)(font "Arial" ))
|
||
(text "0.00" (rect 106 101 224 208)(font "Arial" ))
|
||
(text "50.00" (rect 131 101 278 208)(font "Arial" ))
|
||
(text "c1" (rect 53 110 112 226)(font "Arial" ))
|
||
(text "69/32" (rect 73 110 163 226)(font "Arial" ))
|
||
(text "0.00" (rect 106 110 224 226)(font "Arial" ))
|
||
(text "50.00" (rect 131 110 278 226)(font "Arial" ))
|
||
(text "c2" (rect 53 119 113 244)(font "Arial" ))
|
||
(text "69/16" (rect 73 119 162 244)(font "Arial" ))
|
||
(text "-100.60" (rect 101 119 224 244)(font "Arial" ))
|
||
(text "50.00" (rect 131 119 278 244)(font "Arial" ))
|
||
(text "c3" (rect 53 128 112 262)(font "Arial" ))
|
||
(text "23/32768" (rect 67 128 162 262)(font "Arial" ))
|
||
(text "0.00" (rect 106 128 224 262)(font "Arial" ))
|
||
(text "50.00" (rect 131 128 278 262)(font "Arial" ))
|
||
(line (pt 0 0)(pt 225 0))
|
||
(line (pt 225 0)(pt 225 170))
|
||
(line (pt 0 170)(pt 225 170))
|
||
(line (pt 0 0)(pt 0 170))
|
||
(line (pt 48 90)(pt 152 90))
|
||
(line (pt 48 98)(pt 152 98))
|
||
(line (pt 48 107)(pt 152 107))
|
||
(line (pt 48 116)(pt 152 116))
|
||
(line (pt 48 125)(pt 152 125))
|
||
(line (pt 48 134)(pt 152 134))
|
||
(line (pt 48 90)(pt 48 134))
|
||
(line (pt 64 90)(pt 64 134)(line_width 3))
|
||
(line (pt 98 90)(pt 98 134)(line_width 3))
|
||
(line (pt 126 90)(pt 126 134)(line_width 3))
|
||
(line (pt 151 90)(pt 151 134))
|
||
(line (pt 40 48)(pt 183 48))
|
||
(line (pt 183 48)(pt 183 152))
|
||
(line (pt 40 152)(pt 183 152))
|
||
(line (pt 40 48)(pt 40 152))
|
||
(line (pt 223 64)(pt 183 64))
|
||
(line (pt 223 80)(pt 183 80))
|
||
(line (pt 223 96)(pt 183 96))
|
||
(line (pt 223 112)(pt 183 112))
|
||
(line (pt 223 128)(pt 183 128))
|
||
)
|
||
)
|
mist/pll.cmp | ||
---|---|---|
--Copyright (C) 1991-2012 Altera Corporation
|
||
--Your use of Altera Corporation's design tools, logic functions
|
||
--and other software and tools, and its AMPP partner logic
|
||
--functions, and any output files from any of the foregoing
|
||
--(including device programming or simulation files), and any
|
||
--associated documentation or information are expressly subject
|
||
--to the terms and conditions of the Altera Program License
|
||
--Subscription Agreement, Altera MegaCore Function License
|
||
--Agreement, or other applicable license agreement, including,
|
||
--without limitation, that your use is for the sole purpose of
|
||
--programming logic devices manufactured by Altera and sold by
|
||
--Altera or its authorized distributors. Please refer to the
|
||
--applicable agreement for further details.
|
||
|
||
|
||
component pll
|
||
PORT
|
||
(
|
||
inclk0 : IN STD_LOGIC := '0';
|
||
c0 : OUT STD_LOGIC ;
|
||
c1 : OUT STD_LOGIC ;
|
||
c2 : OUT STD_LOGIC ;
|
||
locked : OUT STD_LOGIC
|
||
);
|
||
end component;
|
||
--Copyright (C) 1991-2013 Altera Corporation
|
||
--Your use of Altera Corporation's design tools, logic functions
|
||
--and other software and tools, and its AMPP partner logic
|
||
--functions, and any output files from any of the foregoing
|
||
--(including device programming or simulation files), and any
|
||
--associated documentation or information are expressly subject
|
||
--to the terms and conditions of the Altera Program License
|
||
--Subscription Agreement, Altera MegaCore Function License
|
||
--Agreement, or other applicable license agreement, including,
|
||
--without limitation, that your use is for the sole purpose of
|
||
--programming logic devices manufactured by Altera and sold by
|
||
--Altera or its authorized distributors. Please refer to the
|
||
--applicable agreement for further details.
|
||
|
||
|
||
component pll
|
||
PORT
|
||
(
|
||
inclk0 : IN STD_LOGIC := '0';
|
||
c0 : OUT STD_LOGIC ;
|
||
c1 : OUT STD_LOGIC ;
|
||
c2 : OUT STD_LOGIC ;
|
||
c3 : OUT STD_LOGIC ;
|
||
locked : OUT STD_LOGIC
|
||
);
|
||
end component;
|
mist/pll.ppf | ||
---|---|---|
<?xml version="1.0" encoding="UTF-8" ?>
|
||
<!DOCTYPE pinplan>
|
||
<pinplan intended_family="Cyclone III" variation_name="pll" megafunction_name="ALTPLL" specifies="all_ports">
|
||
<global>
|
||
<pin name="inclk0" direction="input" scope="external" source="clock" />
|
||
<pin name="c0" direction="output" scope="external" source="clock" />
|
||
<pin name="c1" direction="output" scope="external" source="clock" />
|
||
<pin name="c2" direction="output" scope="external" source="clock" />
|
||
<pin name="locked" direction="output" scope="external" />
|
||
|
||
</global>
|
||
</pinplan>
|
||
<?xml version="1.0" encoding="UTF-8" ?>
|
||
<!DOCTYPE pinplan>
|
||
<pinplan intended_family="Cyclone III" variation_name="pll" megafunction_name="ALTPLL" specifies="all_ports">
|
||
<global>
|
||
<pin name="inclk0" direction="input" scope="external" source="clock" />
|
||
<pin name="c0" direction="output" scope="external" source="clock" />
|
||
<pin name="c1" direction="output" scope="external" source="clock" />
|
||
<pin name="c2" direction="output" scope="external" source="clock" />
|
||
<pin name="c3" direction="output" scope="external" source="clock" />
|
||
<pin name="locked" direction="output" scope="external" />
|
||
|
||
</global>
|
||
</pinplan>
|
mist/pll.qip | ||
---|---|---|
set_global_assignment -name IP_TOOL_NAME "ALTPLL"
|
||
set_global_assignment -name IP_TOOL_VERSION "12.1"
|
||
set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "pll.vhd"]
|
||
set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "pll.bsf"]
|
||
set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "pll.cmp"]
|
||
set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "pll.ppf"]
|
||
set_global_assignment -name IP_TOOL_NAME "ALTPLL"
|
||
set_global_assignment -name IP_TOOL_VERSION "13.0"
|
||
set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "pll.vhd"]
|
||
set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "pll.bsf"]
|
||
set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "pll.cmp"]
|
||
set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "pll.ppf"]
|
mist/pll.vhd | ||
---|---|---|
-- megafunction wizard: %ALTPLL%
|
||
-- GENERATION: STANDARD
|
||
-- VERSION: WM1.0
|
||
-- MODULE: altpll
|
||
|
||
-- ============================================================
|
||
-- File Name: pll.vhd
|
||
-- Megafunction Name(s):
|
||
-- altpll
|
||
--
|
||
-- Simulation Library Files(s):
|
||
-- altera_mf
|
||
-- ============================================================
|
||
-- ************************************************************
|
||
-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE!
|
||
--
|
||
-- 12.1 Build 243 01/31/2013 SP 1.33 SJ Web Edition
|
||
-- ************************************************************
|
||
|
||
|
||
--Copyright (C) 1991-2012 Altera Corporation
|
||
--Your use of Altera Corporation's design tools, logic functions
|
||
--and other software and tools, and its AMPP partner logic
|
||
--functions, and any output files from any of the foregoing
|
||
--(including device programming or simulation files), and any
|
||
--associated documentation or information are expressly subject
|
||
--to the terms and conditions of the Altera Program License
|
||
--Subscription Agreement, Altera MegaCore Function License
|
||
--Agreement, or other applicable license agreement, including,
|
||
--without limitation, that your use is for the sole purpose of
|
||
--programming logic devices manufactured by Altera and sold by
|
||
--Altera or its authorized distributors. Please refer to the
|
||
--applicable agreement for further details.
|
||
|
||
|
||
LIBRARY ieee;
|
||
USE ieee.std_logic_1164.all;
|
||
|
||
LIBRARY altera_mf;
|
||
USE altera_mf.all;
|
||
|
||
ENTITY pll IS
|
||
PORT
|
||
(
|
||
inclk0 : IN STD_LOGIC := '0';
|
||
c0 : OUT STD_LOGIC ;
|
||
c1 : OUT STD_LOGIC ;
|
||
c2 : OUT STD_LOGIC ;
|
||
locked : OUT STD_LOGIC
|
||
);
|
||
END pll;
|
||
|
||
|
||
ARCHITECTURE SYN OF pll IS
|
||
|
||
SIGNAL sub_wire0 : STD_LOGIC_VECTOR (4 DOWNTO 0);
|
||
SIGNAL sub_wire1 : STD_LOGIC ;
|
||
SIGNAL sub_wire2 : STD_LOGIC ;
|
||
SIGNAL sub_wire3 : STD_LOGIC ;
|
||
SIGNAL sub_wire4 : STD_LOGIC ;
|
||
SIGNAL sub_wire5 : STD_LOGIC ;
|
||
SIGNAL sub_wire6 : STD_LOGIC_VECTOR (1 DOWNTO 0);
|
||
SIGNAL sub_wire7_bv : BIT_VECTOR (0 DOWNTO 0);
|
||
SIGNAL sub_wire7 : STD_LOGIC_VECTOR (0 DOWNTO 0);
|
||
|
||
|
||
|
||
COMPONENT altpll
|
||
GENERIC (
|
||
bandwidth_type : STRING;
|
||
clk0_divide_by : NATURAL;
|
||
clk0_duty_cycle : NATURAL;
|
||
clk0_multiply_by : NATURAL;
|
||
clk0_phase_shift : STRING;
|
||
clk1_divide_by : NATURAL;
|
||
clk1_duty_cycle : NATURAL;
|
||
clk1_multiply_by : NATURAL;
|
||
clk1_phase_shift : STRING;
|
||
clk2_divide_by : NATURAL;
|
||
clk2_duty_cycle : NATURAL;
|
||
clk2_multiply_by : NATURAL;
|
||
clk2_phase_shift : STRING;
|
||
compensate_clock : STRING;
|
||
inclk0_input_frequency : NATURAL;
|
||
intended_device_family : STRING;
|
||
lpm_hint : STRING;
|
||
lpm_type : STRING;
|
||
operation_mode : STRING;
|
||
pll_type : STRING;
|
||
port_activeclock : STRING;
|
||
port_areset : STRING;
|
||
port_clkbad0 : STRING;
|
||
port_clkbad1 : STRING;
|
||
port_clkloss : STRING;
|
||
port_clkswitch : STRING;
|
||
port_configupdate : STRING;
|
||
port_fbin : STRING;
|
||
port_inclk0 : STRING;
|
||
port_inclk1 : STRING;
|
||
port_locked : STRING;
|
||
port_pfdena : STRING;
|
||
port_phasecounterselect : STRING;
|
||
port_phasedone : STRING;
|
||
port_phasestep : STRING;
|
||
port_phaseupdown : STRING;
|
||
port_pllena : STRING;
|
||
port_scanaclr : STRING;
|
||
port_scanclk : STRING;
|
||
port_scanclkena : STRING;
|
||
port_scandata : STRING;
|
||
port_scandataout : STRING;
|
||
port_scandone : STRING;
|
||
port_scanread : STRING;
|
||
port_scanwrite : STRING;
|
||
port_clk0 : STRING;
|
||
port_clk1 : STRING;
|
||
port_clk2 : STRING;
|
||
port_clk3 : STRING;
|
||
port_clk4 : STRING;
|
||
port_clk5 : STRING;
|
||
port_clkena0 : STRING;
|
||
port_clkena1 : STRING;
|
||
port_clkena2 : STRING;
|
||
port_clkena3 : STRING;
|
||
port_clkena4 : STRING;
|
||
port_clkena5 : STRING;
|
||
port_extclk0 : STRING;
|
||
port_extclk1 : STRING;
|
||
port_extclk2 : STRING;
|
||
port_extclk3 : STRING;
|
||
self_reset_on_loss_lock : STRING;
|
||
width_clock : NATURAL
|
||
);
|
||
PORT (
|
||
clk : OUT STD_LOGIC_VECTOR (4 DOWNTO 0);
|
||
inclk : IN STD_LOGIC_VECTOR (1 DOWNTO 0);
|
||
locked : OUT STD_LOGIC
|
||
);
|
||
END COMPONENT;
|
||
|
||
BEGIN
|
||
sub_wire7_bv(0 DOWNTO 0) <= "0";
|
||
sub_wire7 <= To_stdlogicvector(sub_wire7_bv);
|
||
sub_wire4 <= sub_wire0(2);
|
||
sub_wire3 <= sub_wire0(0);
|
||
sub_wire1 <= sub_wire0(1);
|
||
c1 <= sub_wire1;
|
||
locked <= sub_wire2;
|
||
c0 <= sub_wire3;
|
||
c2 <= sub_wire4;
|
||
sub_wire5 <= inclk0;
|
||
sub_wire6 <= sub_wire7(0 DOWNTO 0) & sub_wire5;
|
||
|
||
altpll_component : altpll
|
||
GENERIC MAP (
|
||
bandwidth_type => "AUTO",
|
||
clk0_divide_by => 16,
|
||
clk0_duty_cycle => 50,
|
||
clk0_multiply_by => 69,
|
||
clk0_phase_shift => "0",
|
||
clk1_divide_by => 32,
|
||
clk1_duty_cycle => 50,
|
||
clk1_multiply_by => 69,
|
||
clk1_phase_shift => "0",
|
||
clk2_divide_by => 16,
|
||
clk2_duty_cycle => 50,
|
||
clk2_multiply_by => 69,
|
||
clk2_phase_shift => "-2400",
|
||
compensate_clock => "CLK0",
|
||
inclk0_input_frequency => 37037,
|
||
intended_device_family => "Cyclone III",
|
||
lpm_hint => "CBX_MODULE_PREFIX=pll",
|
||
lpm_type => "altpll",
|
||
operation_mode => "NORMAL",
|
||
pll_type => "AUTO",
|
||
port_activeclock => "PORT_UNUSED",
|
||
port_areset => "PORT_UNUSED",
|
||
port_clkbad0 => "PORT_UNUSED",
|
||
port_clkbad1 => "PORT_UNUSED",
|
||
port_clkloss => "PORT_UNUSED",
|
||
port_clkswitch => "PORT_UNUSED",
|
||
port_configupdate => "PORT_UNUSED",
|
||
port_fbin => "PORT_UNUSED",
|
||
port_inclk0 => "PORT_USED",
|
||
port_inclk1 => "PORT_UNUSED",
|
||
port_locked => "PORT_USED",
|
||
port_pfdena => "PORT_UNUSED",
|
||
port_phasecounterselect => "PORT_UNUSED",
|
||
port_phasedone => "PORT_UNUSED",
|
||
port_phasestep => "PORT_UNUSED",
|
||
port_phaseupdown => "PORT_UNUSED",
|
||
port_pllena => "PORT_UNUSED",
|
||
port_scanaclr => "PORT_UNUSED",
|
||
port_scanclk => "PORT_UNUSED",
|
||
port_scanclkena => "PORT_UNUSED",
|
||
port_scandata => "PORT_UNUSED",
|
||
port_scandataout => "PORT_UNUSED",
|
||
port_scandone => "PORT_UNUSED",
|
||
port_scanread => "PORT_UNUSED",
|
||
port_scanwrite => "PORT_UNUSED",
|
||
port_clk0 => "PORT_USED",
|
||
port_clk1 => "PORT_USED",
|
||
port_clk2 => "PORT_USED",
|
||
port_clk3 => "PORT_UNUSED",
|
||
port_clk4 => "PORT_UNUSED",
|
||
port_clk5 => "PORT_UNUSED",
|
||
port_clkena0 => "PORT_UNUSED",
|
||
port_clkena1 => "PORT_UNUSED",
|
||
port_clkena2 => "PORT_UNUSED",
|
||
port_clkena3 => "PORT_UNUSED",
|
||
port_clkena4 => "PORT_UNUSED",
|
||
port_clkena5 => "PORT_UNUSED",
|
||
port_extclk0 => "PORT_UNUSED",
|
||
port_extclk1 => "PORT_UNUSED",
|
||
port_extclk2 => "PORT_UNUSED",
|
||
port_extclk3 => "PORT_UNUSED",
|
||
self_reset_on_loss_lock => "OFF",
|
||
width_clock => 5
|
||
)
|
||
PORT MAP (
|
||
inclk => sub_wire6,
|
||
clk => sub_wire0,
|
||
locked => sub_wire2
|
||
);
|
||
|
||
|
||
|
||
END SYN;
|
||
|
||
-- ============================================================
|
||
-- CNX file retrieval info
|
||
-- ============================================================
|
||
-- Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0"
|
||
-- Retrieval info: PRIVATE: BANDWIDTH STRING "1.000"
|
||
-- Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1"
|
||
-- Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz"
|
||
-- Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low"
|
||
-- Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1"
|
||
-- Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0"
|
||
-- Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0"
|
||
-- Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0"
|
||
-- Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "1"
|
||
-- Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0"
|
||
-- Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0"
|
||
-- Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0"
|
||
-- Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0"
|
||
-- Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "c0"
|
||
-- Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "8"
|
||
-- Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "16"
|
||
-- Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "32"
|
||
-- Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "16"
|
||
-- Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000"
|
||
-- Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000"
|
||
-- Retrieval info: PRIVATE: DUTY_CYCLE2 STRING "50.00000000"
|
||
-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "116.437500"
|
||
-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "58.218750"
|
||
-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "116.437500"
|
||
-- Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0"
|
||
-- Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0"
|
||
-- Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1"
|
||
-- Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0"
|
||
-- Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "1"
|
||
-- Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575"
|
||
-- Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1"
|
||
-- Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "27.000"
|
||
-- Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz"
|
||
-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000"
|
||
-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1"
|
||
-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1"
|
||
-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz"
|
||
-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III"
|
||
-- Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1"
|
||
-- Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "1"
|
||
-- Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1"
|
||
-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "Not Available"
|
||
-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0"
|
||
-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg"
|
||
-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "ps"
|
||
-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT2 STRING "ps"
|
||
-- Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any"
|
||
-- Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0"
|
||
-- Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0"
|
||
-- Retrieval info: PRIVATE: MIRROR_CLK2 STRING "0"
|
||
-- Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "69"
|
||
-- Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "69"
|
||
-- Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "69"
|
||
-- Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1"
|
||
-- Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "57.40000000"
|
||
-- Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "57.50000000"
|
||
-- Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "57.50000000"
|
||
-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "0"
|
||
-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "0"
|
||
-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE2 STRING "0"
|
||
-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz"
|
||
-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz"
|
||
-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT2 STRING "MHz"
|
||
-- Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1"
|
||
-- Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0"
|
||
-- Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000"
|
||
-- Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000"
|
||
-- Retrieval info: PRIVATE: PHASE_SHIFT2 STRING "-2.40000000"
|
Also available in: Unified diff
Added ZPU. Added read/write SD support. Fixed joystick. Switched to new mist keyboard mode (ps2 emulation).