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/clk_div.vhd
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 |