OpenCores
URL https://opencores.org/ocsvn/z80soc/z80soc/trunk

Subversion Repositories z80soc

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 10 to Rev 9
    Reverse comparison

Rev 10 → Rev 9

/trunk/z80soc.qsf File deleted \ No newline at end of file
/trunk/z80soc.qpf File deleted
/trunk/rtl/VHDL/PS2/ps2bkd.vhd
6,7 → 6,6
keyboard_clk : inout std_logic;
keyboard_data : inout std_logic;
clock : in std_logic;
clkdelay : in std_logic;
reset : in std_logic;
read : in std_logic;
scan_ready : out std_logic;
15,44 → 14,16
architecture rtl of ps2kbd is
 
--signal keyboard_clk : std_logic;
--signal keyboard_data : std_logic;
--signal clock : std_logic;
--signal reset : std_logic;
--signal read : std_logic;
--signal scan_ready : std_logic;
--signal ps2_ascii_code : std_logic_vector(7 downto 0);
signal scan_code_sig : std_logic_vector(7 downto 0);
signal scode_shf_sig : std_logic_vector(11 downto 0);
 
signal scan_code_sig : std_logic_vector(7 downto 0);
signal scan_code : std_logic_vector(11 downto 0);
signal shift : std_logic_vector(1 downto 0);
signal caps : std_logic_vector(1 downto 0);
signal ctrlkey : std_logic_vector(3 downto 0);
 
begin
process (clkdelay)
begin
if clkdelay'event and clkdelay='1' then
if scan_code_sig = x"58" then
if caps = "00" then
caps <= "01";
elsif caps = "01" then
caps <= "11";
elsif caps = "11" then
caps <= "10";
else
caps <= "00";
end if;
end if;
end if;
 
scan_code <= "000" & caps(0) & scan_code_sig;
scode_shf_sig <= "0000" & scan_code_sig;
 
end process;
 
ps2_ascii_decode : process(scan_code)
ps2_ascii_decode : process(scode_shf_sig)
begin
case scan_code is
case scode_shf_sig is
when x"066" => ps2_ascii_code <= x"08"; -- Backspace ("backspace" key)
when x"00d" => ps2_ascii_code <= x"09"; -- Horizontal Tab
when x"05a" => ps2_ascii_code <= x"0d"; -- Carriage return ("enter" key)
90,32 → 61,32
when x"149" => ps2_ascii_code <= x"3e"; -- >
when x"14a" => ps2_ascii_code <= x"3f"; -- ?
when x"11e" => ps2_ascii_code <= x"40"; -- @
when x"11c" => ps2_ascii_code <= x"41"; -- A
when x"132" => ps2_ascii_code <= x"42"; -- B
when x"121" => ps2_ascii_code <= x"43"; -- C
when x"123" => ps2_ascii_code <= x"44"; -- D
when x"124" => ps2_ascii_code <= x"45"; -- E
when x"12b" => ps2_ascii_code <= x"46"; -- F
when x"134" => ps2_ascii_code <= x"47"; -- G
when x"133" => ps2_ascii_code <= x"48"; -- H
when x"143" => ps2_ascii_code <= x"49"; -- I
when x"13b" => ps2_ascii_code <= x"4a"; -- J
when x"142" => ps2_ascii_code <= x"4b"; -- K
when x"14b" => ps2_ascii_code <= x"4c"; -- L
when x"13a" => ps2_ascii_code <= x"4d"; -- M
when x"131" => ps2_ascii_code <= x"4e"; -- N
when x"144" => ps2_ascii_code <= x"4f"; -- O
when x"14d" => ps2_ascii_code <= x"50"; -- P
when x"115" => ps2_ascii_code <= x"51"; -- Q
when x"12d" => ps2_ascii_code <= x"52"; -- R
when x"11b" => ps2_ascii_code <= x"53"; -- S
when x"12c" => ps2_ascii_code <= x"54"; -- T
when x"13c" => ps2_ascii_code <= x"55"; -- U
when x"12a" => ps2_ascii_code <= x"56"; -- V
when x"11d" => ps2_ascii_code <= x"57"; -- W
when x"122" => ps2_ascii_code <= x"58"; -- X
when x"135" => ps2_ascii_code <= x"59"; -- Y
when x"11a" => ps2_ascii_code <= x"5a"; -- Z
when x"01c" => ps2_ascii_code <= x"41"; -- A
when x"032" => ps2_ascii_code <= x"42"; -- B
when x"021" => ps2_ascii_code <= x"43"; -- C
when x"023" => ps2_ascii_code <= x"44"; -- D
when x"024" => ps2_ascii_code <= x"45"; -- E
when x"02b" => ps2_ascii_code <= x"46"; -- F
when x"034" => ps2_ascii_code <= x"47"; -- G
when x"033" => ps2_ascii_code <= x"48"; -- H
when x"043" => ps2_ascii_code <= x"49"; -- I
when x"03b" => ps2_ascii_code <= x"4a"; -- J
when x"042" => ps2_ascii_code <= x"4b"; -- K
when x"04b" => ps2_ascii_code <= x"4c"; -- L
when x"03a" => ps2_ascii_code <= x"4d"; -- M
when x"031" => ps2_ascii_code <= x"4e"; -- N
when x"044" => ps2_ascii_code <= x"4f"; -- O
when x"04d" => ps2_ascii_code <= x"50"; -- P
when x"015" => ps2_ascii_code <= x"51"; -- Q
when x"02d" => ps2_ascii_code <= x"52"; -- R
when x"01b" => ps2_ascii_code <= x"53"; -- S
when x"02c" => ps2_ascii_code <= x"54"; -- T
when x"03c" => ps2_ascii_code <= x"55"; -- U
when x"02a" => ps2_ascii_code <= x"56"; -- V
when x"01d" => ps2_ascii_code <= x"57"; -- W
when x"022" => ps2_ascii_code <= x"58"; -- X
when x"035" => ps2_ascii_code <= x"59"; -- Y
when x"01a" => ps2_ascii_code <= x"5a"; -- Z
when x"054" => ps2_ascii_code <= x"5b"; -- [
when x"05d" => ps2_ascii_code <= x"5c"; -- \
when x"05b" => ps2_ascii_code <= x"5d"; -- ]
122,38 → 93,38
when x"136" => ps2_ascii_code <= x"5e"; -- ^
when x"14e" => ps2_ascii_code <= x"5f"; -- _
when x"00e" => ps2_ascii_code <= x"60"; -- `
when x"01c" => ps2_ascii_code <= x"61"; -- a
when x"032" => ps2_ascii_code <= x"62"; -- b
when x"021" => ps2_ascii_code <= x"63"; -- c
when x"023" => ps2_ascii_code <= x"64"; -- d
when x"024" => ps2_ascii_code <= x"65"; -- e
when x"02b" => ps2_ascii_code <= x"66"; -- f
when x"034" => ps2_ascii_code <= x"67"; -- g
when x"033" => ps2_ascii_code <= x"68"; -- h
when x"043" => ps2_ascii_code <= x"69"; -- i
when x"03b" => ps2_ascii_code <= x"6a"; -- j
when x"042" => ps2_ascii_code <= x"6b"; -- k
when x"04b" => ps2_ascii_code <= x"6c"; -- l
when x"03a" => ps2_ascii_code <= x"6d"; -- m
when x"031" => ps2_ascii_code <= x"6e"; -- n
when x"044" => ps2_ascii_code <= x"6f"; -- o
when x"04d" => ps2_ascii_code <= x"70"; -- p
when x"015" => ps2_ascii_code <= x"71"; -- q
when x"02d" => ps2_ascii_code <= x"72"; -- r
when x"01b" => ps2_ascii_code <= x"73"; -- s
when x"02c" => ps2_ascii_code <= x"74"; -- t
when x"03c" => ps2_ascii_code <= x"75"; -- u
when x"02a" => ps2_ascii_code <= x"76"; -- v
when x"01d" => ps2_ascii_code <= x"77"; -- w
when x"022" => ps2_ascii_code <= x"78"; -- x
when x"035" => ps2_ascii_code <= x"79"; -- y
when x"01a" => ps2_ascii_code <= x"7a"; -- z
when x"11c" => ps2_ascii_code <= x"61"; -- a
when x"132" => ps2_ascii_code <= x"62"; -- b
when x"121" => ps2_ascii_code <= x"63"; -- c
when x"123" => ps2_ascii_code <= x"64"; -- d
when x"124" => ps2_ascii_code <= x"65"; -- e
when x"12b" => ps2_ascii_code <= x"66"; -- f
when x"134" => ps2_ascii_code <= x"67"; -- g
when x"133" => ps2_ascii_code <= x"68"; -- h
when x"143" => ps2_ascii_code <= x"69"; -- i
when x"13b" => ps2_ascii_code <= x"6a"; -- j
when x"142" => ps2_ascii_code <= x"6b"; -- k
when x"14b" => ps2_ascii_code <= x"6c"; -- l
when x"13a" => ps2_ascii_code <= x"6d"; -- m
when x"131" => ps2_ascii_code <= x"6e"; -- n
when x"144" => ps2_ascii_code <= x"6f"; -- o
when x"14d" => ps2_ascii_code <= x"70"; -- p
when x"115" => ps2_ascii_code <= x"71"; -- q
when x"12d" => ps2_ascii_code <= x"72"; -- r
when x"11b" => ps2_ascii_code <= x"73"; -- s
when x"12c" => ps2_ascii_code <= x"74"; -- t
when x"13c" => ps2_ascii_code <= x"75"; -- u
when x"12a" => ps2_ascii_code <= x"76"; -- v
when x"11d" => ps2_ascii_code <= x"77"; -- w
when x"122" => ps2_ascii_code <= x"78"; -- x
when x"135" => ps2_ascii_code <= x"79"; -- y
when x"11a" => ps2_ascii_code <= x"7a"; -- z
when x"154" => ps2_ascii_code <= x"7b"; -- {
when x"15d" => ps2_ascii_code <= x"7c"; -- |
when x"15b" => ps2_ascii_code <= x"7d"; -- }
when x"10e" => ps2_ascii_code <= x"7e"; -- ~
when x"071" => ps2_ascii_code <= x"7f"; -- (Delete OR DEL on numeric keypad)
when x"171" => ps2_ascii_code <= x"7f"; -- (Delete OR DEL on numeric keypad)
when x"171" => ps2_ascii_code <= x"7f"; -- (Delete OR DEL on numeric keypad)
when others => ps2_ascii_code <= x"FF"; -- keys not mapped
end case;
end process;
/trunk/rtl/VHDL/top_de1.vhd
9,6 → 9,8
-- Based on the T80 core: http://www.opencores.org/projects.cgi/web/t80
-- This version developed and tested on: Altera DE1 Development Board
--
-- Please, see the RevisionHistory.txt file for complete features and change history.
--
-- Peripherals configured (Using Ports):
--
-- 08 KB Internal ROM Read (0x0000h - 0x1FFFh)
207,10 → 209,7
signal D_ROM : std_logic_vector(7 downto 0);
 
signal clk25mhz_sig : std_logic;
signal clk25mhz : std_logic;
signal clk1hz : std_logic;
signal clk10hz : std_logic;
signal clk100hz : std_logic;
signal Clk_1hz : std_logic;
signal HEX_DISP0 : std_logic_vector(6 downto 0);
signal HEX_DISP1 : std_logic_vector(6 downto 0);
251,8 → 250,6
HEX3 <= HEX_DISP3;
SRAM_ADDR(15 downto 0) <= A - x"4000" when (A >= x"4000" and MReq_n = '0');
-- SRAM_ADDR(15 downto 0) <= A - x"4000" when (A >= x"4000" and MReq_n = '0') else A;
-- this is bad --> SRAM_ADDR(15 downto 0) <= A - x"4000";
SRAM_DQ(15 downto 8) <= (others => 'Z');
SRAM_ADDR(17 downto 16) <= "00";
SRAM_UB_N <= '1';
265,12 → 262,9
SRAM_DQ(7 downto 0) <= DO_CPU when (Wr_n = '0' and MReq_n = '0' and A >= x"4000") else (others => 'Z');
 
-- Write into VRAM
-- this is almost ok -->vram_wraddress_sig <= A - x"2000" when (A >= x"2000" and A < x"4000" and MReq_n = '0' and IORQ_n = '1');
vram_wraddress_sig <= A - x"2000" when (A >= x"2000" and A < x"4000" and MReq_n = '0');
-- vram_wraddress_sig <= A - x"2000";
vram_wren_sig <= not Wr_n when (A >= x"2000" and A < x"4000" and IORQ_n = '1');
vram_data_sig <= DO_CPU when (Wr_n = '0' and MReq_n = '0' and A >= x"2000" and A < x"4000") else (others => 'Z');
-- this is ok --> vram_data_sig <= DO_CPU;
-- Input to Z80
DI_CPU <= SRAM_DQ(7 downto 0) when (Rd_n = '0' and MReq_n = '0' and A >= x"4000") else
357,10 → 351,9
NUMBER3 <= NUMBER3_sig;
LEDR(7 downto 0) <= LEDR_sig(7 downto 0);
LEDG <= LEDG_sig;
end process;
-- the following three processes deals with different clock domain signals
ps2_process1: process(CLOCK_50)
begin
416,7 → 409,7
CLOCK_50 => CLOCK_50,
VRAM_DATA => vram_q_sig,
VRAM_ADDR => vram_rdaddress_sig,
VRAM_CLOCK => clk25mhz,
VRAM_CLOCK => VRAM_CLOCK,
VRAM_WREN => vram_rden_sig,
VGA_R => VGA_R,
VGA_G => VGA_G,
427,7 → 420,7
 
vram8k_inst : work.vram8k PORT MAP (
rdaddress => vram_rdaddress_sig,
rdclock => not clk25mhz,
rdclock => not VRAM_CLOCK,
rden => vram_rden_sig,
q => vram_q_sig,
wraddress => vram_wraddress_sig(12 downto 0),
442,19 → 435,7
A => A,
D => D_ROM
);
clkdiv_inst: clk_div
port map (
clock_25Mhz => clk25mhz,
clock_1MHz => open,
clock_100KHz => open,
clock_10KHz => open,
clock_1KHz => open,
clock_100Hz => clk100hz,
clock_10Hz => clk10hz,
clock_1Hz => clk1hz
);
clock_z80_inst : Clock_357Mhz
port map (
clock_50Mhz => CLOCK_50,
485,7 → 466,6
keyboard_clk => PS2_CLK,
keyboard_data => PS2_DAT,
clock => CLOCK_50,
clkdelay => clk100hz,
reset => Rst_n_s,
read => ps2_read,
scan_ready => ps2_scan_ready,
/trunk/ROM/mif2coe.sh File deleted
/trunk/ROM/z802rom.sh File deleted
/trunk/ROM/hex2rom.sh File deleted
/trunk/ROM/psf2mif.sh File deleted
/trunk/ROM/drdos8x8.txt File deleted \ No newline at end of file
/trunk/doc/RevisionHistory.txt
1,5 → 1,3
2008/05/01 - Added Caps lock support. Upper and lower case characters are now supported for keyboard input.
 
2008/04/19 - Added complete character set support
- Modified the Z80 demo program format the screen output and input
 
/trunk/doc/README.txt
103,7 → 103,7
TO-DO:
----
 
- (done)Expand the character sets (this versions have only uppercase letters and numbers)
- Expand the character sets (this versions have only uppercase letters and numbers)
- 80x40 Video display
- Serial communication
- Monitor program to allow download of programs by serial communication

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.