diff --git a/Arcade_MiST/Namco Super Pacman Hardware/meta/Grobda.mra b/Arcade_MiST/Namco Super Pacman Hardware/meta/Grobda.mra new file mode 100644 index 00000000..46110b17 --- /dev/null +++ b/Arcade_MiST/Namco Super Pacman Hardware/meta/Grobda.mra @@ -0,0 +1,38 @@ + + Grobda + 0220 + grobda + 20210307 + druaga + + 05 + + + + FF + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Arcade_MiST/Namco Super Pacman Hardware/meta/Pac n Pal.mra b/Arcade_MiST/Namco Super Pacman Hardware/meta/Pac n Pal.mra new file mode 100644 index 00000000..82240b25 --- /dev/null +++ b/Arcade_MiST/Namco Super Pacman Hardware/meta/Pac n Pal.mra @@ -0,0 +1,39 @@ + + Pac & Pal + 0220 + pacnpal + 20210307 + druaga + + 05 + + + + FF + + + + + + + + + + + + FF + + + + + + + + + + + + + + + diff --git a/Console_MiST/ChannelF_MiST/ChannelF.qsf b/Console_MiST/ChannelF_MiST/ChannelF.qsf index 560f9015..10286322 100644 --- a/Console_MiST/ChannelF_MiST/ChannelF.qsf +++ b/Console_MiST/ChannelF_MiST/ChannelF.qsf @@ -18,7 +18,7 @@ # # Quartus II 64-Bit # Version 13.1.4 Build 182 03/12/2014 SJ Full Version -# Date created = 20:10:17 February 28, 2021 +# Date created = 00:42:55 March 05, 2021 # # -------------------------------------------------------------------------- # # @@ -46,7 +46,7 @@ set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL set_global_assignment -name SMART_RECOMPILE ON set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:rtl/build_id.tcl" -set_global_assignment -name SYSTEMVERILOG_FILE rtl/CannelF_MiST.sv +set_global_assignment -name SYSTEMVERILOG_FILE rtl/ChannelF_MiST.sv set_global_assignment -name VHDL_FILE rtl/channel_f.vhd set_global_assignment -name VHDL_FILE rtl/f8_cpu.vhd set_global_assignment -name VHDL_FILE rtl/f8_psu.vhd @@ -99,10 +99,10 @@ set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS OFF # Analysis & Synthesis Assignments # ================================ set_global_assignment -name FAMILY "Cyclone III" -set_global_assignment -name TOP_LEVEL_ENTITY CannelF_MiST set_global_assignment -name DEVICE_FILTER_PIN_COUNT 144 set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 8 set_global_assignment -name SAVE_DISK_SPACE OFF +set_global_assignment -name TOP_LEVEL_ENTITY ChannelF_MiST # Fitter Assignments # ================== @@ -142,8 +142,8 @@ set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -fall set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -rise set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -fall -# -------------------------- -# start ENTITY(CannelF_MiST) +# --------------------------- +# start ENTITY(ChannelF_MiST) # start DESIGN_PARTITION(Top) # --------------------------- @@ -157,6 +157,6 @@ set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" - # end DESIGN_PARTITION(Top) # ------------------------- -# end ENTITY(CannelF_MiST) -# ------------------------ +# end ENTITY(ChannelF_MiST) +# ------------------------- set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/Console_MiST/ChannelF_MiST/Snapshot/ChannelF.rbf b/Console_MiST/ChannelF_MiST/Snapshot/ChannelF.rbf index ce4de0fb..12418761 100644 Binary files a/Console_MiST/ChannelF_MiST/Snapshot/ChannelF.rbf and b/Console_MiST/ChannelF_MiST/Snapshot/ChannelF.rbf differ diff --git a/Console_MiST/ChannelF_MiST/rtl/CannelF_MiST.sv b/Console_MiST/ChannelF_MiST/rtl/CannelF_MiST.sv deleted file mode 100644 index f792a784..00000000 --- a/Console_MiST/ChannelF_MiST/rtl/CannelF_MiST.sv +++ /dev/null @@ -1,173 +0,0 @@ -module CannelF_MiST( - output LED, - output [5:0] VGA_R, - output [5:0] VGA_G, - output [5:0] VGA_B, - output VGA_HS, - output VGA_VS, - output AUDIO_L, - output AUDIO_R, - input SPI_SCK, - output SPI_DO, - input SPI_DI, - input SPI_SS2, - input SPI_SS3, - input CONF_DATA0, - input CLOCK_27 -); - -`include "rtl\build_id.v" - -localparam CONF_STR = { - "ChannelF;BINCHF;", - "O1,Swap Joystick,Off,On;", - "O34,Scanlines,Off,25%,50%,75%;", - "O6,Blending,Off,On;", - "T0,Reset;", - "V,v1.00.",`BUILD_DATE -}; - -assign LED = ~ioctl_downl; -assign AUDIO_R = AUDIO_L; - -wire pll_locked,clock_48, clk3p579; -pll pll( - .locked(pll_locked), - .inclk0(CLOCK_27), - .c0(clock_48), - .c1(clk3p579)//3.579545 - ); -// NTSC : 3.579545MHz * 12 = 42.95454MHz -// PAL : 4MHz * 12 = 48MHz - -channel_f channel_f( - .clk(clk3p579), - .reset(status[0] | buttons[1]), - .pll_locked(pll_locked), - .vga_r(r), - .vga_g(g), - .vga_b(b), - .vga_hs(hs), - .vga_vs(vs), - .vga_de(blankn), - .Keys({m_four_players, m_three_players, m_two_players, m_one_player}), - .joystick_0({m_fireD, m_fireC, m_fireB, m_fireA, m_up, m_down, m_left, m_right}), - .joystick_1({m_fire2D, m_fire2C, m_fire2B, m_fire2A, m_up2, m_down2, m_left2, m_right2}), - .ioctl_download(ioctl_downl), - .ioctl_index(ioctl_index), - .ioctl_wr(~ioctl_wr),//todo - .ioctl_addr(ioctl_addr), - .ioctl_dout(ioctl_dout), -// .ioctl_wait(ioctl_wait), - .audio(audio) -); - - -wire ioctl_downl; -wire [7:0] ioctl_index; -wire ioctl_wr; -wire [24:0] ioctl_addr; -wire [7:0] ioctl_dout; - -data_io data_io( - .clk_sys ( clock_48 ), - .SPI_SCK ( SPI_SCK ), - .SPI_SS2 ( SPI_SS2 ), - .SPI_DI ( SPI_DI ), - .ioctl_download( ioctl_downl ), - .ioctl_index ( ioctl_index ), - .ioctl_wr ( ioctl_wr ), - .ioctl_addr ( ioctl_addr ), - .ioctl_dout ( ioctl_dout ) -); - - -mist_video #(.COLOR_DEPTH(6),.SD_HCNT_WIDTH(10)) mist_video( - .clk_sys(clock_48), - .SPI_SCK(SPI_SCK), - .SPI_SS3(SPI_SS3), - .SPI_DI(SPI_DI), - .R(blankn ? r[7:2] : 0), - .G(blankn ? g[7:2] : 0), - .B(blankn ? b[7:2] : 0), - .HSync(hs), - .VSync(vs), - .VGA_R(VGA_R), - .VGA_G(VGA_G), - .VGA_B(VGA_B), - .VGA_VS(VGA_VS), - .VGA_HS(VGA_HS), - .ce_divider(1'b0), - .blend(status[6]), - .scandoubler_disable(scandoublerD), - .scanlines(status[4:3]), - .ypbpr(ypbpr), - .no_csync(no_csync) - ); - -wire [31:0] status; -wire [1:0] buttons; -wire [1:0] switches; -wire [31:0] joystick_0; -wire [31:0] joystick_1; -wire scandoublerD; -wire [7:0] r, g, b; -wire hs, vs, blankn; -wire [15:0] audio; -wire ypbpr; -wire no_csync; -wire key_strobe; -wire key_pressed; -wire [7:0] key_code; - -user_io #( - .STRLEN(($size(CONF_STR)>>3))) -user_io( - .clk_sys (clock_48 ), - .conf_str (CONF_STR ), - .SPI_CLK (SPI_SCK ), - .SPI_SS_IO (CONF_DATA0 ), - .SPI_MISO (SPI_DO ), - .SPI_MOSI (SPI_DI ), - .buttons (buttons ), - .switches (switches ), - .scandoubler_disable (scandoublerD), - .ypbpr (ypbpr ), - .no_csync (no_csync ), - .key_strobe (key_strobe ), - .key_pressed (key_pressed ), - .key_code (key_code ), - .joystick_0 (joystick_0 ), - .joystick_1 (joystick_1 ), - .status (status ) - ); - -dac #( - .C_bits(16)) -dac( - .clk_i(clock_48), - .res_n_i(1'b1), - .dac_i(audio), - .dac_o(AUDIO_L) - ); - -wire m_up, m_down, m_left, m_right, m_fireA, m_fireB, m_fireC, m_fireD, m_fireE, m_fireF; -wire m_up2, m_down2, m_left2, m_right2, m_fire2A, m_fire2B, m_fire2C, m_fire2D, m_fire2E, m_fire2F; -wire m_tilt, m_coin1, m_coin2, m_coin3, m_coin4, m_one_player, m_two_players, m_three_players, m_four_players; - -arcade_inputs inputs ( - .clk ( clock_48 ), - .key_strobe ( key_strobe ), - .key_pressed ( key_pressed ), - .key_code ( key_code ), - .joystick_0 ( joystick_0 ), - .joystick_1 ( joystick_1 ), - .rotate ( 0 ), - .orientation ( 2'b00 ), - .joyswap ( status[1] ), - .oneplayer ( 1'b0 ), - .controls ( {m_tilt, m_coin4, m_coin3, m_coin2, m_coin1, m_four_players, m_three_players, m_two_players, m_one_player} ), - .player1 ( {m_fireF, m_fireE, m_fireD, m_fireC, m_fireB, m_fireA, m_up, m_down, m_left, m_right} ), - .player2 ( {m_fire2F, m_fire2E, m_fire2D, m_fire2C, m_fire2B, m_fire2A, m_up2, m_down2, m_left2, m_right2} ) -); -endmodule \ No newline at end of file diff --git a/Console_MiST/ChannelF_MiST/rtl/ChannelF_MiST.sv b/Console_MiST/ChannelF_MiST/rtl/ChannelF_MiST.sv new file mode 100644 index 00000000..efbaf512 --- /dev/null +++ b/Console_MiST/ChannelF_MiST/rtl/ChannelF_MiST.sv @@ -0,0 +1,178 @@ +module ChannelF_MiST( + output LED, + output [5:0] VGA_R, + output [5:0] VGA_G, + output [5:0] VGA_B, + output VGA_HS, + output VGA_VS, + output AUDIO_L, + output AUDIO_R, + input SPI_SCK, + output SPI_DO, + input SPI_DI, + input SPI_SS2, + input SPI_SS3, + input CONF_DATA0, + input CLOCK_27 +); + +`include "rtl\build_id.v" + +localparam CONF_STR = { + "ChannelF;BINCHF;", + "O1,Swap Joystick,Off,On;", + "O34,Scanlines,Off,25%,50%,75%;", +// "O6,Blending,Off,On;", + "T0,Reset;", + "V,v1.00.",`BUILD_DATE +}; + +assign LED = ~ioctl_downl; +//assign AUDIO_R = AUDIO_L; + +wire pll_locked,clock_28p636, clk3p579; +pll pll( + .locked ( pll_locked ), + .inclk0 ( CLOCK_27 ), + .c0 ( clock_28p636 ),//28.63636000 + .c1 ( clk3p579 )//3.579545 + ); + +channel_f channel_f( + .clk ( clk3p579 ), + .reset ( status[0] | buttons[1]), + .pll_locked ( pll_locked ), + .vga_r ( r ), + .vga_g ( g ), + .vga_b ( b ), + .vga_hs ( hs ), + .vga_vs ( vs ), + .vga_de ( blankn ), + .Keys ( {m_four_players, m_three_players, m_two_players, m_one_player}), + .joystick_0 ( {m_fireD, m_fireC, m_fireB, m_fireA, m_up, m_down, m_left, m_right}), + .joystick_1 ( {m_fire2D, m_fire2C, m_fire2B, m_fire2A, m_up2, m_down2, m_left2, m_right2}), + .ioctl_download ( ioctl_downl ), + .ioctl_index ( ioctl_index ), + .ioctl_wr ( ~ioctl_wr ),//todo + .ioctl_addr ( ioctl_addr ), + .ioctl_dout ( ioctl_dout ), + .ioctl_wait ( ),//todo + .audio ( audio ) +); + +wire ioctl_downl; +wire [7:0] ioctl_index; +wire ioctl_wr; +wire [24:0] ioctl_addr; +wire [7:0] ioctl_dout; + +data_io data_io( + .clk_sys ( clock_28p636 ), + .SPI_SCK ( SPI_SCK ), + .SPI_SS2 ( SPI_SS2 ), + .SPI_DI ( SPI_DI ), + .ioctl_download ( ioctl_downl ), + .ioctl_index ( ioctl_index ), + .ioctl_wr ( ioctl_wr ), + .ioctl_addr ( ioctl_addr ), + .ioctl_dout ( ioctl_dout ) +); + +mist_video #(.COLOR_DEPTH(6),.SD_HCNT_WIDTH(10)) mist_video( + .clk_sys ( clock_28p636 ), + .SPI_SCK ( SPI_SCK ), + .SPI_SS3 ( SPI_SS3 ), + .SPI_DI ( SPI_DI ), + .R ( blankn ? r[7:2] : 0), + .G ( blankn ? g[7:2] : 0), + .B ( blankn ? b[7:2] : 0), + .HSync ( hs ), + .VSync ( vs ), + .VGA_R ( VGA_R ), + .VGA_G ( VGA_G ), + .VGA_B ( VGA_B ), + .VGA_VS ( VGA_VS ), + .VGA_HS ( VGA_HS ), + .ce_divider ( 0 ), + .blend ( status[6] ), + .scandoubler_disable(scandoublerD ), + .scanlines ( status[4:3] ), + .ypbpr ( ypbpr ), + .no_csync ( no_csync ) + ); + +wire [31:0] status; +wire [1:0] buttons; +wire [1:0] switches; +wire [31:0] joystick_0; +wire [31:0] joystick_1; +wire scandoublerD; +wire [7:0] r, g, b; +wire hs, vs, blankn; +wire [15:0] audio; +wire ypbpr; +wire no_csync; +wire key_strobe; +wire key_pressed; +wire [7:0] key_code; + +user_io #( + .STRLEN(($size(CONF_STR)>>3))) +user_io( + .clk_sys ( clock_28p636 ), + .conf_str ( CONF_STR ), + .SPI_CLK ( SPI_SCK ), + .SPI_SS_IO ( CONF_DATA0 ), + .SPI_MISO ( SPI_DO ), + .SPI_MOSI ( SPI_DI ), + .buttons ( buttons ), + .switches ( switches ), + .scandoubler_disable (scandoublerD ), + .ypbpr ( ypbpr ), + .no_csync ( no_csync ), + .key_strobe ( key_strobe ), + .key_pressed ( key_pressed ), + .key_code ( key_code ), + .joystick_0 ( joystick_0 ), + .joystick_1 ( joystick_1 ), + .status ( status ) + ); + +//dac #( +// .C_bits(16)) +//dac( +// .clk_i ( clock_28p636 ), +// .res_n_i ( 1'b1 ), +// .dac_i ( audio ), +// .dac_o ( AUDIO_L ) +// ); + +mist_audio #(16,0,0) mist_audio( + .clk ( clock_28p636 ), + .reset_n ( 1'b1 ), + .audio_inL ( audio ), +// .audio_inR ( audio ), + .AUDIO_L ( AUDIO_L ), + .AUDIO_R ( AUDIO_R ) +); + +wire m_up, m_down, m_left, m_right, m_fireA, m_fireB, m_fireC, m_fireD, m_fireE, m_fireF; +wire m_up2, m_down2, m_left2, m_right2, m_fire2A, m_fire2B, m_fire2C, m_fire2D, m_fire2E, m_fire2F; +wire m_tilt, m_coin1, m_coin2, m_coin3, m_coin4, m_one_player, m_two_players, m_three_players, m_four_players; + +arcade_inputs inputs ( + .clk ( clock_28p636 ), + .key_strobe ( key_strobe ), + .key_pressed ( key_pressed ), + .key_code ( key_code ), + .joystick_0 ( joystick_0 ), + .joystick_1 ( joystick_1 ), + .rotate ( 0 ), + .orientation ( 2'b00 ), + .joyswap ( status[1] ), + .oneplayer ( 1'b0 ), + .controls ( {m_tilt, m_coin4, m_coin3, m_coin2, m_coin1, m_four_players, m_three_players, m_two_players, m_one_player} ), + .player1 ( {m_fireF, m_fireE, m_fireD, m_fireC, m_fireB, m_fireA, m_up, m_down, m_left, m_right} ), + .player2 ( {m_fire2F, m_fire2E, m_fire2D, m_fire2C, m_fire2B, m_fire2A, m_up2, m_down2, m_left2, m_right2} ) +); +endmodule \ No newline at end of file diff --git a/Console_MiST/ChannelF_MiST/rtl/ovo.vhd b/Console_MiST/ChannelF_MiST/rtl/ovo.vhd deleted file mode 100644 index 2130eac8..00000000 --- a/Console_MiST/ChannelF_MiST/rtl/ovo.vhd +++ /dev/null @@ -1,180 +0,0 @@ --------------------------------------------------------------------------------- --- Overlay --------------------------------------------------------------------------------- --- DO 10/2017 --------------------------------------------------------------------------------- - --------------------------------------------------------------------------------- - -LIBRARY ieee; -USE ieee.std_logic_1164.ALL; -USE ieee.numeric_std.ALL; - -LIBRARY work; -USE work.base_pack.ALL; - -ENTITY ovo IS - GENERIC ( - COLS : natural :=32; - LINES : natural :=2; - RGB : unsigned(23 DOWNTO 0) :=x"FFFFFF"); - PORT ( - -- VGA IN - i_r : IN uv8; - i_g : IN uv8; - i_b : IN uv8; - i_hs : IN std_logic; - i_vs : IN std_logic; - i_de : IN std_logic; - i_en : IN std_logic; - i_clk : IN std_logic; - - -- VGA_OUT - o_r : OUT uv8; - o_g : OUT uv8; - o_b : OUT uv8; - o_hs : OUT std_logic; - o_vs : OUT std_logic; - o_de : OUT std_logic; - - -- Control - ena : IN std_logic; -- Overlay ON/OFF - - -- Probes - in0 : IN unsigned(0 TO COLS*5-1); - in1 : IN unsigned(0 TO COLS*5-1) - ); -END ENTITY ovo; - ---############################################################################## - -ARCHITECTURE rtl OF ovo IS - TYPE arr_slv8 IS ARRAY (natural RANGE <>) OF uv8; - CONSTANT chars : arr_slv8 :=( - x"3E", x"63", x"73", x"7B", x"6F", x"67", x"3E", x"00", -- 0 - x"0C", x"0E", x"0C", x"0C", x"0C", x"0C", x"3F", x"00", -- 1 - x"1E", x"33", x"30", x"1C", x"06", x"33", x"3F", x"00", -- 2 - x"1E", x"33", x"30", x"1C", x"30", x"33", x"1E", x"00", -- 3 - x"38", x"3C", x"36", x"33", x"7F", x"30", x"78", x"00", -- 4 - x"3F", x"03", x"1F", x"30", x"30", x"33", x"1E", x"00", -- 5 - x"1C", x"06", x"03", x"1F", x"33", x"33", x"1E", x"00", -- 6 - x"3F", x"33", x"30", x"18", x"0C", x"0C", x"0C", x"00", -- 7 - x"1E", x"33", x"33", x"1E", x"33", x"33", x"1E", x"00", -- 8 - x"1E", x"33", x"33", x"3E", x"30", x"18", x"0E", x"00", -- 9 - x"0C", x"1E", x"33", x"33", x"3F", x"33", x"33", x"00", -- A - x"3F", x"66", x"66", x"3E", x"66", x"66", x"3F", x"00", -- B - x"3C", x"66", x"03", x"03", x"03", x"66", x"3C", x"00", -- C - x"1F", x"36", x"66", x"66", x"66", x"36", x"1F", x"00", -- D - x"7F", x"46", x"16", x"1E", x"16", x"46", x"7F", x"00", -- E - x"7F", x"46", x"16", x"1E", x"16", x"06", x"0F", x"00", -- F - x"00", x"00", x"00", x"00", x"00", x"00", x"00", x"00", --' ' 10 - x"00", x"00", x"3F", x"00", x"00", x"3F", x"00", x"00", -- = 11 - x"00", x"0C", x"0C", x"3F", x"0C", x"0C", x"00", x"00", -- + 12 - x"00", x"00", x"00", x"3F", x"00", x"00", x"00", x"00", -- - 13 - x"18", x"0C", x"06", x"03", x"06", x"0C", x"18", x"00", -- < 14 - x"06", x"0C", x"18", x"30", x"18", x"0C", x"06", x"00", -- > 15 - x"08", x"1C", x"36", x"63", x"41", x"00", x"00", x"00", -- ^ 16 - x"08", x"1C", x"36", x"63", x"41", x"00", x"00", x"00", -- v 17 - x"18", x"0C", x"06", x"06", x"06", x"0C", x"18", x"00", -- ( 18 - x"06", x"0C", x"18", x"18", x"18", x"0C", x"06", x"00", -- ) 19 - x"00", x"0C", x"0C", x"00", x"00", x"0C", x"0C", x"00", -- : 1A - x"00", x"00", x"00", x"00", x"00", x"0C", x"0C", x"00", -- . 1B - x"00", x"00", x"00", x"00", x"00", x"0C", x"0C", x"06", -- , 1C - x"1E", x"33", x"30", x"18", x"0C", x"00", x"0C", x"00", -- ? 1D - x"18", x"18", x"18", x"00", x"18", x"18", x"18", x"00", -- | 1E - x"36", x"36", x"7F", x"36", x"7F", x"36", x"36", x"00"); -- # 1F - - SIGNAL vcpt,hcpt,hcpt2 : natural RANGE 0 TO 4095; - SIGNAL vin0,vin1 : unsigned(0 TO COLS*5-1); - - SIGNAL t_r,t_g,t_b : uv8; - SIGNAL t_hs,t_vs,t_de : std_logic; - - SIGNAL col : uv8; - SIGNAL de : std_logic; - - SIGNAL in0s,in1s : unsigned(in0'range); -BEGIN - - in0s<=in0 WHEN rising_edge(i_clk); - in1s<=in1 WHEN rising_edge(i_clk); - - ---------------------------------------------------------- - Megamix:PROCESS(i_clk) IS - VARIABLE vin_v : unsigned(0 TO 32*5-1); - VARIABLE char_v : unsigned(4 DOWNTO 0); - BEGIN - IF rising_edge(i_clk) THEN - IF i_en='1' THEN - ---------------------------------- - -- Propagate VGA signals. 2 cycles delay - t_r<=i_r; - t_g<=i_g; - t_b<=i_b; - t_hs<=i_hs; - t_vs<=i_vs; - t_de<=i_de; - - o_r<=t_r; - o_g<=t_g; - o_b<=t_b; - o_hs<=t_hs; - o_vs<=t_vs; - o_de<=t_de; - - ---------------------------------- - -- Latch sampled values during vertical sync - IF i_vs='1' THEN - vin0<=in0s; - vin1<=in1s; - END IF; - - ---------------------------------- - IF i_vs='1' THEN - vcpt<=0; - de<='0'; - ELSIF i_hs='1' AND t_hs='0' AND de='1' THEN - vcpt<=(vcpt+1) MOD 4096; - END IF; - - ---------------------------------- - IF (vcpt/8) MOD 2=0 THEN - vin_v:=vin0; - ELSE - vin_v:=vin1; - END IF; - - IF i_hs='1' THEN - hcpt<=0; - ELSIF i_de='1' THEN - hcpt<=(hcpt+1) MOD 4096; - de<='1'; - END IF; - hcpt2<=hcpt; - - ---------------------------------- - -- Pick characters - IF hcpt