mirror of
https://github.com/Gehstock/Mist_FPGA.git
synced 2026-02-09 01:31:01 +00:00
Bombjack first working version without Backgrounds
This commit is contained in:
@@ -150,6 +150,13 @@ set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH
|
||||
set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)"
|
||||
set_global_assignment -name VERILOG_INPUT_VERSION SYSTEMVERILOG_2005
|
||||
set_global_assignment -name VERILOG_SHOW_LMF_MAPPING_MESSAGES OFF
|
||||
set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top
|
||||
set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top
|
||||
set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top
|
||||
set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VGA_*
|
||||
set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:rtl/build_id.tcl"
|
||||
#set_location_assignment PLL_1 -to #"pll:pll|altpll:altpll_component"
|
||||
set_global_assignment -name SYSTEMVERILOG_FILE rtl/b2m_mist.sv
|
||||
set_global_assignment -name VERILOG_FILE rtl/b2m_top.v
|
||||
set_global_assignment -name VERILOG_FILE rtl/k580wi53.v
|
||||
set_global_assignment -name VERILOG_FILE rtl/k580wm80a.v
|
||||
@@ -157,23 +164,10 @@ set_global_assignment -name VERILOG_FILE rtl/k580wn59.v
|
||||
set_global_assignment -name VERILOG_FILE rtl/k580ww55.v
|
||||
set_global_assignment -name VERILOG_FILE rtl/b2m_video.v
|
||||
set_global_assignment -name VERILOG_FILE rtl/b2m_kbd.v
|
||||
set_global_assignment -name SYSTEMVERILOG_FILE rtl/video_mixer.sv
|
||||
set_global_assignment -name VERILOG_FILE rtl/scandoubler.v
|
||||
set_global_assignment -name VERILOG_FILE rtl/osd.v
|
||||
set_global_assignment -name VERILOG_FILE rtl/mist_io.v
|
||||
set_global_assignment -name SYSTEMVERILOG_FILE rtl/hq2x.sv
|
||||
set_global_assignment -name VHDL_FILE rtl/dac.vhd
|
||||
set_global_assignment -name VERILOG_FILE rtl/build_id.v
|
||||
set_global_assignment -name VERILOG_FILE rtl/SDRAM_Controller.v
|
||||
set_global_assignment -name QIP_FILE rtl/bios.qip
|
||||
set_global_assignment -name SYSTEMVERILOG_FILE rtl/b2m_mist.sv
|
||||
set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top
|
||||
set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top
|
||||
set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top
|
||||
set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VGA_*
|
||||
set_global_assignment -name VERILOG_FILE rtl/sd_card.v
|
||||
set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:rtl/build_id.tcl"
|
||||
#set_location_assignment PLL_1 -to #"pll:pll|altpll:altpll_component"
|
||||
set_global_assignment -name QIP_FILE rtl/pll.qip
|
||||
set_global_assignment -name QIP_FILE rtl/clk20mhz.qip
|
||||
set_global_assignment -name VERILOG_FILE rtl/clk20mhz.v
|
||||
set_global_assignment -name VHDL_FILE rtl/pll.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/bios.vhd
|
||||
set_global_assignment -name QIP_FILE ../../common/mist/mist.qip
|
||||
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top
|
||||
@@ -1,7 +1,2 @@
|
||||
{ "" "" "" "*" { } { } 0 10240 "" 0 0 "Quartus II" 0 -1 0 ""}
|
||||
{ "" "" "" "*" { } { } 0 13012 "" 0 0 "Quartus II" 0 -1 0 ""}
|
||||
{ "" "" "" "*" { } { } 0 10230 "" 0 0 "Quartus II" 0 -1 0 ""}
|
||||
{ "" "" "" "*" { } { } 0 10036 "" 0 0 "Quartus II" 0 -1 0 ""}
|
||||
{ "" "" "" "*" { } { } 0 14320 "" 0 0 "Quartus II" 0 -1 0 ""}
|
||||
{ "" "" "" "*" { } { } 0 14284 "" 0 0 "Quartus II" 0 -1 0 ""}
|
||||
{ "" "" "" "*" { } { } 0 10273 "" 0 0 "Quartus II" 0 -1 0 ""}
|
||||
{ "" "" "" "*" { } { } 0 10240 "" 0 0 "Quartus II" 0 -1 0 ""}
|
||||
|
||||
@@ -1,257 +0,0 @@
|
||||
:20000000C313E0C355E8C3CBF1C372E2C3CCE2C3F5F132F33EAAD310D311D312D3133E801D
|
||||
:20002000D36B3E30D3633E76D3633E94D3633E0DD3623E90D3473EF0D3463E15D3793E4020
|
||||
:20004000D3793EFED3793E16D3743EDFD3753EFFD375AFD36A32FEDF32FFDF3EC33204DF26
|
||||
:200060002113E02205DFFB0100603EE9D3613E07D3613E15D3790B79B0C276E03E25D3799C
|
||||
:2000800001FFFF0B79B0C283E03100DFCD66EE0120DF2126DFCD55F07AFEDCCC3CF83AFF12
|
||||
:2000A000DFB7C29EE03100DFCD10FF3E25D3793EFFD3753E20D374CD04E92119E1CDC2E35E
|
||||
:2000C0002125E1CDC2E33100DF218CE1CDC2E3CD72E221C6E0E5FE3FCAABE0FE0DC8FE53F4
|
||||
:2000E000CA05E2FE52CA53E2FE57CA5AE2FE4CCA6AE3FE47CA41E2FE59CA53E3FE55CA603E
|
||||
:20010000E3CD07E1C3C6E0210DE1C3C2E30D0A2DDEE8D8D1DAD02D0D001B42B7B0B3C0C3D6
|
||||
:20012000B7C7B8BA00C4E3DDDAE6D8D83A0D0A532DE3E1E2D0DDDED2DAD020EFE7D5D9DADF
|
||||
:20014000D80D0A4C2DD7D0D3E0E3D7DAD020D8D720BFB7C30D0A522DE7E2D5DDD8D520E192
|
||||
:2001600020BCBB0D0A572DD7D0DFD8E1EC20DDD020BCBB0D0A472DD2EBDFDEDBDDD8E2EC5B
|
||||
:2001800020DFE0DED3E0D0DCDCE30D000A3E000D0ABFDED4D3DEE2DED2ECE2D520DCD0D322
|
||||
:2001A000DDD8E2DEE4DEDD20D4DBEF2000B7B0BFB8C1B800C7C2B5BDB8CF000D0AD820DD88
|
||||
:2001C000D0D6DCD8E2D5203CB2BA3E000A2AB7B0BFB8C1CC2A0D000A2AC7C2B5BDB8B52A6C
|
||||
:2001E0000D000A2ADEE8D8D1DAD020BAC12A0D000AD2EBDADBEEE7D820DCD0D3DDD8E2DE96
|
||||
:20020000E4DEDD0D00CDCCE23DC201E12A1ADFCD41E3E5CD46E3CD4EE3E17EE5CDD5E3CD53
|
||||
:200220004EE3CD72E2E1FE0DCA3DE2FE2EC8E5CDCFE22A1ADF7CB7C201E17DE17723C30F7C
|
||||
:20024000E2CDCCE23DC201E13100DF21C6E0E52A1ADFE9CD61E2CDE2EFC9CD61E2CDA8EFAD
|
||||
:20026000C9CDCCE2FE02C201E12A1ADF444D2A1CDFC911DADF0600CD6FE4FE0DCA89E2FEC6
|
||||
:200280007FCA9DE2FE20DA77E2CDCEE31213FE0DCAACE20478FE20CAACE2C377E2AFB0CA08
|
||||
:2002A00077E2051B3E7FCDCEE3C377E221DADF2217DF783216DFE52116DF7EB73E0DCACACE
|
||||
:2002C000E2352A17DF7E232217DFE1C9CDB6E22119DF360023FE0DCA01E3CD08E3CD20E36C
|
||||
:2002E000FE0DCA01E3CDB6E2CD08E3CD20E3FE0DCA01E3CDB6E2CD08E3CD20E3FE0DC201E4
|
||||
:20030000E11119DF1A13B7C9EB210000CD2BE329292929B56FCDB6E2CD38E3C20CE3EBC9E5
|
||||
:2003200073237223E52119DF34E1C9D630FE0AD8C6F9FE10D8C301E1FE0DC8FE2CC8FE20A3
|
||||
:20034000C93E0AC3CEE37CCDD5E37DC3D5E33E20C3CEE3CD61E2CD44E4CDF1E3C207E1C934
|
||||
:20036000CD61E2CD44E4CD1CE4C9CDCCE2FE03C201E12A1ADF444D2A1CDFE52A1EDF545D2C
|
||||
:20038000E13E90D3477BD3457AF6C0D3467AE6C0C2A1E33E0CD347DB44F53E0DD347C3AC06
|
||||
:2003A000E33E0ED347DB44F53E0FD347F10213CDB6E3DA85E3C97894DABFE3C07995D003D9
|
||||
:2003C00037C9F57ECDCEE323B7C2C3E3F1C9C54FCDD7E7C1C9F51F1F1F1FE60FCDE2E3F11E
|
||||
:2003E000E60FFE0AD2ECE3C630C3CEE3C637C3CEE3C5CD65E4C0DB78B7C0CD65E4C0DB78F6
|
||||
:20040000FEFFC0CD65E4C0DB7802CDB6E3DA03E4CD65E4C0DB78C1CD55F0BAC9C5CD55F077
|
||||
:20042000C1D5CD5DE4AFD378CD5DE43EFFD378CD5DE40AD378CDB6E3DA2FE4CD5DE4DB7871
|
||||
:20044000F1D378C93E96D3633E07D3623E15D3793E40D3793EFED3793E27D379C9DB79E66E
|
||||
:2004600005CA5DE4C9DB79E63ACA65E4FE02C9C5D53EFF32D7DFCDAFE4FEFFCA76E44F3A8A
|
||||
:2004800045DFB7CA9DE4110008CDFCE6CA96E41B7BB2C289E42F3245DF79D1C1C911002029
|
||||
:2004A000C389E4AF32D7DFCDAFE4FEFFC02FC9C5D5E53A25DFB7CACBE42A6EDF7E3225DF48
|
||||
:2004C000B7CAACE623226EDFC3B4E63E04F5065816001E7F210128F33E02D36A4E3AFEDFB3
|
||||
:2004E000D36AFB3E01F5A1C209E5147AB8FAF5E41600C313E5F107D2E5E47D07D205E52161
|
||||
:200500000129C3D7E46FC3D7E47BFE7FC213E55AC3EAE4F13AD6DFBA7A32D6DFCA23E5F1EB
|
||||
:20052000C3CBE4F13DC2CDE47BFE7FCAB2E67AB7CA63E5FE38FAB2E6FE407BFA4FE5FE3826
|
||||
:20054000FAB2E6FE40F2B2E6CDC7E65AC330E6FE38FA5CE5FE40F2B2E6C38BE67ACDC7E633
|
||||
:20056000C37AE506007BFE38FA7AE5FE40F230E6FE3CC2B2E63E1BC3B4E616003A26DF4F15
|
||||
:20058000A8E604CA8CE52A27DFC3DFE52187E77800E610C2DFE57BFE20D2EAE5211FE7797A
|
||||
:2005A000A80600E603CAD9E5FE01C2CFE57BFE05CAD9E5FE07CAD9E5FE0FCAD9E5FE11CAA6
|
||||
:2005C000D9E5FE18CAD9E5FE1BCAD9E5C3D7E52167E7FE02CAD9E50620197E80C3B4E67B93
|
||||
:2005E0000600FE30D2B2E6C3D9E5D620FE10D220E65FFE0BC20BE679A8E602CA0BE679A800
|
||||
:20060000E6013EF1C2B4E63DC3B4E679A80600E601C21AE6213FE7C3D9E52157E7C3D9E556
|
||||
:20062000D610FE08D2B2E65F214FE70600C3D9E53A26DF4F7B1600D640FE10DA5CE6D618DA
|
||||
:200640002F3C5F79A8E601C24CE616057B82110A002168DF193DC254E6C3BCE45FFE08CA55
|
||||
:200660006CE6FE0ACA6CE6FE0BC276E679A8E601C283E6C37DE679A8E608C283E621B7E78B
|
||||
:20068000C386E621C7E70600C3D9E53AD7DFB7CAB2E67AFE397BCA9FE6FE397AC2B2E6CD79
|
||||
:2006A000C7E63A26DFA83226DFCD7FEBCDFCE6C2ACE63EFF4FFEFFCAC3E63A26DFE610C440
|
||||
:2006C00039F879E1D1C1C90600FE38CAD3E6FE3FC2D6E60601C9FE3EC2DEE60602C9FE3D1C
|
||||
:2006E000C2E6E60604C9FE3BC2EEE60608C9FE3AC2F6E60610C9FE3CC00620C9F33E02D34F
|
||||
:200700006A3A7F28B7C214E73A8028E612C214E73AFF29B73AFEDFD36AFB3E00C82FC955C8
|
||||
:2007200041544C5760467E4A59564B5251427B445B454E43485A477D584F5D4950534D2A77
|
||||
:20074000265E252423405F3C272BFF217C292820097F1C1D031F0D383736353433322D2CB3
|
||||
:200760003B3DFF315C3039B3C4B5B4C6B1B0CEBEBDBCBBBAB9B8C5B2B6C3C2C1C0CFBFCA8F
|
||||
:20078000C7C9CDC8B7CBCC1501140C17FF06FF0A19160B121102FF041B050E03081A07FFD0
|
||||
:2007A000180F1D0910130DFFFF1EFFFFFF001FFFFFFFFFFF1CFFFF37363534333231303F94
|
||||
:2007C0002E223EFFFF39380C181108151A16172F103A2EFFFF1419F3F5C5D5E5CD55E8211F
|
||||
:2007E0004CE8E5C335DF79FE1BC2F8E73EC33235DF2164EC2236DFC9FE08C202E83E12C359
|
||||
:200800001BE8FE0CC20CE83E13C31BE8FE1BD224E8FE11CA24E8FE10DA24E8C6314FCDEC2F
|
||||
:20082000E7C335DFFE7FCA7CE8FE09CA85E8FE0ACAC2E8FE0DCAEAE8FE1FCA04E9FE07CA4B
|
||||
:20084000BEE8FE20D8E1CDC9E9CD9DE9CD55E8E1D1C1F1FBC9F52A38DFCD48EAE53E02CDF0
|
||||
:200860006AE8E13E03CD6AE8F1C9D36A060A7E2F772C05C26EE83AFEDFD36AC9CDB4E93EAC
|
||||
:2008800020CDC9E9C93A43DF473A3EDFB8CAB7E847AFB8CA99E8D29EE8C608C392E8470032
|
||||
:2008A0003A43DFB8DAA8E878323EDF473A3FDF4FCDC3ED2238DFC9CDEAE8CDC2E8C9CD39A1
|
||||
:2008C000F8C93A41DF473A3FDFFE17CADFE8B8C83C323FDF2A38DF7DC60A6F2238DFC93A73
|
||||
:2008E00026DFE620CAECEAC288E93A42DF473A3EDFB8C82A38DF90253DC2F7E878323EDF06
|
||||
:200900002238DFC9F5C5D5E5210644223ADF21EC44223CDFCD6EE9CD25E9CD88E9CD7FEBB9
|
||||
:20092000E1D1C1F1C9E5F53EFFD310D311D312D313210040E53E02CD5DE9E13E03CD5DE913
|
||||
:200940003A21DFD3103A22DFD3113A23DFD3123A24DFD313AF3244DFD369F1E1C9D36A36C9
|
||||
:2009600000237CFE70C25FE93AFEDFD36AC9AF3242DF3240DF3E273243DF3E173241DF3A56
|
||||
:2009800026DFE61F3226DFC93A42DF323EDF473A40DF323FDF4FCDC3ED2238DFC93A43DF89
|
||||
:2009A000473A3EDFB8CAB7E83C323EDF2A38DF242238DFC93A42DF473A3EDFB8C83D323E60
|
||||
:2009C000DF2A38DF252238DFC9F5AF32D9DFCD48EA11D9DF0601CD5AEAF1CDEBE90608CDF5
|
||||
:2009E0005AEA060111D9DFCD5AEAC9E52132EAE50129DFFE40D2FBE9D620C90303FE60D210
|
||||
:200A000005EAD640C90303FE80D20FEAD660C90303FEB0D219EAD680C90303FED0D223EA5F
|
||||
:200A2000D6B0C90303FEF3D22DEAD6D0C90129DFAFE1F50A6F030A67F1110800B7CA45EAE3
|
||||
:200A4000193DC33CEAEBE1C9D5F52A38DFEB2A3ADF7D836F7C8267F1D1C91A4FD511D5EA1C
|
||||
:200A6000D53A20DFFE01C26DEA160059C9FE02C276EA511E00C9FE03C27EEA5159C9FE041E
|
||||
:200A8000C289EA1600792F5FC9FE06C293EA51792F5FC9FE07C29CEA511EFFC9FE08C2A7E4
|
||||
:200AA000EA792F571E00C9FE09C2B1EA792F5759C9FE0BC2BAEA16FF59C9FE0CC2C4EA7948
|
||||
:200AC0002F575FC9FE0DC2CFEA792F571EFFC9D116FF792F5F3E02D36A723E03D36A733AF6
|
||||
:200AE000FEDFD36AD1132C05C25AEAC92100003922ECDF21ECDFF92A3CDF7DC60A6F223C6D
|
||||
:200B0000DF3E02F5D36A061AE50E283600240DC20BEBE12C05C208EBF13DCA2FEBF53E0618
|
||||
:200B20003207EB2A3ADF7DC6046F3E03C304EB3E1A3207EB2A3CDFE5D17DC60A6FDB74E63D
|
||||
:200B400001C23DEB3A44DFC60AD3693244DF3E03D36A060AE5D50E281A77AF1214240DC215
|
||||
:200B600058EBD1E12C1C05C254EB2A3ADF7DC60A6F223ADF2AECDFF93AFEDFD36AC90DF5EB
|
||||
:200B8000C5D5E53A20DFF53E043220DF2146DF3A26DFE604C2B1EB3A26DFE602C2A8EB01EB
|
||||
:200BA00052ECCD44ECC3B7EB0155ECCD44ECC3B7EB0158ECCD44EC362F233A26DFE601CA37
|
||||
:200BC000C7EB3648C3C9EB364223365023362F233A26DFE608C2DEEB015BECC3E1EB015EB4
|
||||
:200BE000ECCD44EC3A26DFE620C2F8EB362F230161ECCD44ECC301EC362023014FECCD44D9
|
||||
:200C0000EC06281146DFAF32D9DF2A38DFE52A3CDF3E0B856F2238DFC5E5D511D9DF0601BB
|
||||
:200C2000CD5AEAD11AD5CDEBE90608CD5AEAD1E124C11305C215ECE12238DFF13220DFE194
|
||||
:200C4000D1C1F1C916030A77230315C246ECC9202020BBD0E2C0E3E1B3E0E4C6E4E0C3DFC2
|
||||
:200C6000BAC0E3DB79D641FE1AD2ADEC5F16002179EC19195E2356EBE95EEF2EED73ED7910
|
||||
:200C8000ED82EF8CEF7CEF6FEF6DED52ED67ED7FEDADEC66EE85EDE5EEADECADECADECB9A3
|
||||
:200CA000EC1DEEADECEFEC0AEF9BEEADEC3EC33235DF21E6E72236DFC9AF32D8DF21C4EC10
|
||||
:200CC0002236DFC93AD8DFB7C2DEEC2168DF7932D8DF110A00193DC2D5EC2217DFC9792A9E
|
||||
:200CE00017DF77232217DFB7C032D8DFC3ADEC3E0332D8DF2101ED2236DF2129DF22ECDF0A
|
||||
:200D0000C93AD8DF2AECDFFE03C21BEDF5793D075F16001922ECDFF1C326EDFE02C224ED92
|
||||
:200D200071C326ED23713D32D8DFC0C3ADECCD8EEE213EED2236DF2155DF2217DFC979B764
|
||||
:200D4000CA4CED2A17DF77232217DFC9CD7FEBC3ADEC3A40DF473A3FDFB8CAADEC3DF53AE3
|
||||
:200D60003EDF47F1C368EFCDC2E8C3ADECCD9DE9C3ADECCDB4E9C3ADECCD88E9C3ADECCD55
|
||||
:200D80006EE9C3ADEC3A20DFF50F0FE603F53A42DF473A40DF4FCDC3ED11064419F1F5E66F
|
||||
:200DA000013220DFE53E0232D9DFCDDCEDE1F1E6023220DF3E0332D9DFCDDCEDF13220DF8E
|
||||
:200DC000C3ADEC21000078B7CAD0ED243DC2CBED79B7C87DC60A0DC2D4ED6FC93A42DF4756
|
||||
:200DE0003A43DF903C4F3A40DF473A41DF903C47C5E53AD9DFD36A3A20DFB7C202EE57C3DA
|
||||
:200E000004EE16FF3E0A722C3DC206EE05C204EE3AFEDFD36AE124C10DC2F0EDC93E043236
|
||||
:200E2000D8DF2131EE2236DF3A26DFF6203226DFC93AD8DFF50D215DEEE5FE04C244EE797C
|
||||
:200E40003242DFC9FE03C24EEE793240DFC9FE02C258EE793243DFC9793241DFE1F13D323A
|
||||
:200E6000D8DFCA79EDC93E0A01F6FF21D6DF09772336002B3DC26EEE0E151193EF2120DF79
|
||||
:200E80001A7713230DC280EECD8EEEC3ADEC2154DF3E1A3620233DC293EEC93E0232D8DF12
|
||||
:200EA00021A7EE2236DFC93AD8DF0DF5FE02C2C1EE79D620FE18DABBEE3E17323FDFC3CEDA
|
||||
:200EC000EE79D620FE28DACBEE3E27323EDFF13D32D8DFC03A3EDF473A3FDF4FCDC3ED228D
|
||||
:200EE00038DFC3ADEC21ECEE2236DFC979E60FF5F50F0FE60347F1E603B8C203EFF13E0267
|
||||
:200F0000C304EFF13220DFC3ADEC3E0432D8DF2116EF2236DFC93AD8DFF52155EFE5FE041A
|
||||
:200F2000C22DEF79FE80C83222DFD311C9FE03C23CEF79FE80C83223DFD312C9FE02C24B98
|
||||
:200F4000EF79FE80C83224DFD313C979FE80C83221DFD310E1F13D32D8DFCAADECC93A438A
|
||||
:200F6000DF323EDF473A41DF323FDF4FC3DCEE3A42DF323EDF473A3FDFC36BEF3A43DFC3F1
|
||||
:200F800072EF3A3EDF473A40DFC368EF3A3EDF47C365EF02FFCD1EF000001FE7EFF2EFF385
|
||||
:200FA000EFF4EFF2EFF5EFF6F5D5E5C5CD55F0218FE1CDC2E321ADE1CDC2E321BBE1CDC2AE
|
||||
:200FC000E3CD6FE4FE0DCACEEFC1E1C32BF021CCE1CDC2E3C1E11EB0CD63F03E0DD362C3E9
|
||||
:200FE0002BF0221EDF210000392217DF2A1EDFF5D5E5C5218FE1CDC2E321B4E1CDC2E3215E
|
||||
:20100000BBE1CDC2E3CD6FE4FE0DC2C9EF21D7E1CDC2E3AFC1E1CD86F0F3C247F07ACD55B6
|
||||
:20102000F0BACA2BF021E2E1CDC2E32113E02205DFCD38F0D1F1FBC93EFFD3753E20D3740C
|
||||
:2010400021F0E1CDC2E3C921B7F1CDC2E3CD38F02A17DFF9C9F516000A8257CDB6E3DA58CB
|
||||
:20106000F0F1C9F5C5E5D5C5CDACF07D914F7C984703E156CDDBF0230B78B1C273F0D1CD80
|
||||
:20108000DBF0E1C1F1C9F5C5E5E5C5CD2DF1C1E10B03C5CD5CF1C17A0279ADC291F078AC9C
|
||||
:2010A000C291F0C5CD5CF1C1E1C1F1C9F3E52122F12205DF21401F3E9ED3633E02D3623E9A
|
||||
:2010C00010D3633EFDD3753E0DCD22F13E0C763E0D762B7CB5C2CCF0E1F3C93E0CFB763E2B
|
||||
:2010E0000C763E0D763E0D763E08F53E0C767A0F573E0617767A07573E063F17767A0F5778
|
||||
:201100003E0D76F13DC2EAF03E0C763E0D763E0C763E0D763E0C763E0D763E0C763E0D7640
|
||||
:20112000F3C9D36B7BD3603E61D374FBC92147F02205DFF33E10D3633EFDD37521E803CD2C
|
||||
:2011400085F12B7CB5C23FF1445CFBCD85F1091DC24BF12424247CA71F845FC9CD85F1CD5F
|
||||
:2011600085F17993DA5FF106081600CD85F17993D278F1F5CD85F1F17A1F5705C26BF1CD0C
|
||||
:2011800085F1CD85F1DB74E610CA85F1DB74E610C28CF1AFD363DB602F4F3E10D3633EFF2E
|
||||
:2011A000D360C9C5D5CD5CF17AD1C1C9F5D51EB051CDDBF0D1F1C90A2A20DEE8D8D1DAD031
|
||||
:2011C00020E7E2D5DDD8EF202A0D001100000100C02101C0CD81E32A00C07CBDC80321FF63
|
||||
:2011E000C3CD81E3CD59E22A00C02B7E23CDC2E3B7CA2DF2570600CD6FE4FE0DCA20F2FEC9
|
||||
:2012000019C20EF24F78B7CAF7F105C31AF2FE1AC2F7F14F78BACAF7F104CDD7E7C3F7F1C0
|
||||
:2012200078010800B7CA2DF2093DC324F25E2356D5234E2346235E2356D5235E2356EBD163
|
||||
:20124000CD81E3CD66EEE1E9DB74E604C83EFFC9F5C5CD48F2CA52F279FE80D46BF22FD372
|
||||
:20126000683E09D36B3DD36BC1F1C9FEF0C275F23EB5C37CF2FEF1C27CF23ED5FED0D288F6
|
||||
:20128000F2D6B00E00C38CF2D6D00E01E5D521A1F216005F195E79B77BC29EF2C620D1E1E3
|
||||
:2012A000C9C1C2D7C7C4C5D6DAC9CACBCCCDCECFD0D2D3D4D5C6C8C3DEDBDDDFD9D8DCC046
|
||||
:2012C000D1C50E40C3CAF2C50E80F306F63E0BD36B3DD36BDB7404A1CAD4F278A7F2EBF2F5
|
||||
:2012E0002F3CFE0A0600FAEBF2067F78C1FBC900000000000000000C1E1E0C0C000C00367A
|
||||
:201300003636000000000036367F367F36360000187C063C603718006333180C6663001C31
|
||||
:20132000361C6E3B336E000606030000000000180C0606060C1800060C1818180C0600003C
|
||||
:20134000663CFF3C660000000C0C3F0C0C000000000000000C0C060000003F00000000007E
|
||||
:20136000000000000C0C006030180C060301003E63737B6F673E000C0E0C0C0C0C3F001E4D
|
||||
:2013800033301C06333F003F33181C30331E00383C36337F3078003F031F3030331E001CFD
|
||||
:2013A00006031F33331E003F3330180C0C0C001E33331E33331E001E33333E30180E000065
|
||||
:2013C0000C0C00000C0C00000C0C00000C0C06180C0603060C180000003F003F00000006CC
|
||||
:2013E0000C1830180C06001E3330180C000C003E637B7B031E00000C1E33333F3333003F92
|
||||
:2014000066663E66663F003C66030303663C001F36666666361F007F46161E16467F007F3B
|
||||
:2014200046161E16060F003C66030373667C003333333F333333001E0C0C0C0C0C1E0078A9
|
||||
:2014400030303033331E006766361E366667000F06060646667F0063777F7F6B636300639C
|
||||
:20146000676F7B736363001C36636363361C003F66663E06060F001E3333333B1E38007FEA
|
||||
:2014800066663E366667001E33060C18331E003F2D0C0C0C0C1E003333333333331E003336
|
||||
:2014A000333333331E0C006363636B7F7763006363361C1C3663003333331E0C0C1E007F10
|
||||
:2014C0006331184C667F001E06060606061E0003060C18306040001E18181818181E00081C
|
||||
:2014E0001C366300000000000000000000007F0C0C18000000000000001E303E336E000754
|
||||
:2015000006063E66663B0000001E3303331E003830303E33336E0000001E333F031E001C5E
|
||||
:2015200036060F06060F0000006E33333E301F0706366E666667000C000E0C0C0C1E003074
|
||||
:201540000030303033331E070666361E3667000E0C0C0C0C0C1E000000337F7F6B630000AC
|
||||
:20156000001F333333330000001E3333331E0000003B66663E060F00006E33333E30780097
|
||||
:20158000003B6E66060F0000003E031E301F00080C3E0C0C2C18000000333333336E000091
|
||||
:2015A000003333331E0C000000636B7F7F3600000063361C36630000003333333E301F00F2
|
||||
:2015C000003F190C263F00380C0C070C0C38000808080000080808070C0C380C0C07006E87
|
||||
:2015E0003B00000000000000081C3663637F000C1E33333F3333007F06063E66663F003FC9
|
||||
:2016000066663E66663F007F66060606060F003C36363636367F637F46161E16467F006B3E
|
||||
:201620006B3E1C3E696B003E63603860633E006363737B6F6763001C63737B6F67630063A3
|
||||
:20164000331B0F1B336300786C66666666630063777F7F6B6363003333333F333333003EE5
|
||||
:2016600063636363633E007F636363636363003F66663E06060F003C66030303663C003F7C
|
||||
:201680002D0C0C0C0C1E006363637E60201E00187EDBDB7E183C0063361C1C36636300336C
|
||||
:2016A00033333333337F606363637E60606000636B6B6B6B6B7F00636B6B6B6B6B7F60072C
|
||||
:2016C000060636666636006363636F5B5B6F000303033F63633F003E63607C60633E00330B
|
||||
:2016E0006B6B6F6B6B33007E63637E6C66630000001E303E337E0000003F033F633F000045
|
||||
:20170000001F331F331F0000003F030303030000003C3636367F6300001E333F031E00004A
|
||||
:20172000006B6B3E6B6B0000001E3318331E0000006363737F660000186363737F660000B1
|
||||
:2017400000331B0F1B73000000786C66666700000063777F6B6300000063637F6363000055
|
||||
:20176000003E6363633E0000007F636363630000003F63633F030300003E6303633E00002A
|
||||
:20178000003F0C0C0C0C00000063667C603E000000187EDB7E1818000063361C366300008A
|
||||
:2017A00000333333337F60000033333E30300000006B6B6B6B7F0000006B6B6B6B7F6000C4
|
||||
:2017C0000007063E663E00000063636F5B6F00000003033F633F0000003F6078603F00007E
|
||||
:2017E00000336B6F6B330000007E637E666300147F46161E16467F00121E333F031E006407
|
||||
:20180000C3A3E4C36FE4C3A3F1C3D7E7C3ACF1C350F2C3FCE6C348F2C3C2E3C3F1E3C32D9A
|
||||
:20182000F1C3ACF0C3E2EFC3A8EFC355F0C31CE4C3A5E0C31CFDC340FDC32EFDC335FDC3D5
|
||||
:2018400080F8C3F0F8C3ABF9C380FAC316FBC372FBC3BEFBC305FCC339FCC3A0FCC325E955
|
||||
:20186000C304E9C381E3C3FFFFC3B6E3C37EF8C37EF8C344E4C3D5E3C3C1F2C3C7F2C9FFE2
|
||||
:20188000CDBAF8D8E5D5C57A1F7B1F1F1FE63FC640574B5879E6074F060021E8F80946EBE6
|
||||
:2018A0003ADCDF4FCDC5F87832DFDF22DDDFC1E1D122EFDF7832F1DFEBC978C60AD83E7FA6
|
||||
:2018C000933E019AC91602F33E02D36A79A278CAD6F8B6C3D8F82FA6773E03D36A15C2CC6A
|
||||
:2018E000F83AFEDFD36AFBC90102040810204080CDBAF8D8E5D5C52AEFDF7B956F7A9C670F
|
||||
:20190000DCA3F90E02DA0AF90E003AF1DFEB906FDCA3F93E0067DA1BF93E40B14F7B957A4D
|
||||
:201920009C3E01D229F9EB3E80B132E0DF29CDA3F92B22E3DFEB22E5DF545D2922E1DF3A25
|
||||
:20194000DCDF4F3ADFDF472ADDDF7CD640DA37FA3E7094DA37FA7AB3CAA7F81BD5E52AE3F6
|
||||
:20196000DFEB2AE5DF23193AE0DFDA74F9F681EB2AE1DF1922E5DFE1570FD290F90F78D2ED
|
||||
:201980008AF90FD28FF925C38FF907D28FF924477A07D29CF9072DDA9CF92C2CCDC5F8D1E1
|
||||
:2019A000C356F97C2F677D2F6F23C9CDBAF8D8E5D5C5EB22E9DF68260022EBDF3AF7DF4780
|
||||
:2019C0002AF8DFEBCD91FADA37FA5916003AEEDF6F62EBA7C4A8FA22D7DF593AEDDF6F6271
|
||||
:2019E000EBA7C4A8FA22F5DF48CDC5FAE52AF5DFCDA8FA2422F3DF2AD7DFEBCDA8FA22D986
|
||||
:201A0000DFEBD1CDA8FA22D7DF2AF5DFCDA8FA22F5DF3AF9DF4FCD3BFACD80F8DA37FA0CC2
|
||||
:201A20003E48A9C227FA4FCD3BFACDF0F8DA37FA3AF8DFA9C21FFAC1D1E1C9CDC5FA22E123
|
||||
:201A4000DFEB22E5DF2AD9DFCD9DFAE52AE5DFEB2AF5DFCD9DFAD119EB2AEBDF197CC6FF4D
|
||||
:201A6000D8452AE5DFEB2AF3DFCD9DFAE52AE1DFEB2AD7DFCD9DFAD119EB2AE9DF19EBC97E
|
||||
:201A8000CD91FAD822EDDFEB22F8DFEB7832F7DFC97AC6B9D87BC6B9D878C6B9C9CDA8FA3E
|
||||
:201AA0007C26000FDCA3F9C9D5C57CAA477D21FF00540E080FD2B9FA19EB29EB0DC2B4FAFD
|
||||
:201AC0006C60C1D1C9C579010000161292FADCFA0C92FADCFA0492FADCFA0D9282076F2685
|
||||
:201AE0000011F0FA195E236E60517CAAC1C8EBC900FF16FF2CFC42F758F16CE880DE93D2FA
|
||||
:201B0000A5C4B5B5C4A5D293DE80E86CF158F742FC2CFF16FF0078C6F0D8C5D5E5CD61FB06
|
||||
:201B20000E20F31ACD53FB473E02D36A703AFEDFD36A131ACD53FB473E03D36A703AFEDF33
|
||||
:201B4000D36A13230DC223FBFB3AFEDFD36AAFE1D1C1C9E5C5670608291F05C258FBC1E1C8
|
||||
:201B6000C9780F0F0F47E6F04F78E6034721003C09C978C6F0D87AC6D1D87BC68CD8C5D586
|
||||
:201B8000E5CD61FB7B075F3E4082570602D50E10F33E02D36A1A2424772525B6123E03D395
|
||||
:201BA0006A1A2424772525B61223130DC291FB3AFEDFD36AFBD11405C28DFBC34EFB78C672
|
||||
:201BC000F0D87AC6D1D87BC68CD8C5D5E57B076F3E408267E5CD61FB11000219EBE10602CA
|
||||
:201BE000E50E10F33E02D36A1A773E03D36A1A7713230DC2E4FB3AFEDFD36AFBE12405C2D3
|
||||
:201C0000E0FBC34EFBCDBAF8D8C5D5E5CD34FCCDBAF8DA30FC7891D434FC0504CD84F8CD59
|
||||
:201C200034FCC541CDF0F8C1CD34FC4FB8C21BFCE1D1C1C9EB78414FC9CD8AFCD8C5E5E569
|
||||
:201C40007CC64067474DCD7AFCDA6CFCF33E02D36A0A772B773E03D36A0A7723777C2505B0
|
||||
:201C6000D64092C24DFC3AFEDFD36AFBE17D2D93C23FFCE1CD7AFCA7C1C97D2EF59307D8E0
|
||||
:201C80003C83D8C60AD8D60A6FC97AC6D1D87BC60BD87CC6D0D87DC60AD87C92D87D93C912
|
||||
:201CA000CD8AFCD8C5E5E57CC640474DCDDDFCDACFFC7CC64067D53E0232D6DFCDEAFC3E33
|
||||
:201CC0000332D6DFCDEAFCD17D2D0D93C2B6FCE17C2592C2A6FCE1CDDDFCA7C1C97C920793
|
||||
:201CE0003C82673E2F94D0262FC9F3E53AD6DFD36A0A2100001608292907D200FD2C2C2CD7
|
||||
:201D000015C2F7FC555C3AFEDFD36AE13AD6DFD36A7325723AFEDFD36A24FBC9F5E604CAF8
|
||||
:201D200029FDF13A20DFC32AFDF132DCDFC9E52139FEC339FDE52132FEC5010020C342FD6E
|
||||
:201D4000E5C53E8832FFDF32FADF7932FDDF3E25D3793EA6D36378D3623E10D3633E76D3F0
|
||||
:201D6000633EC33204DF22FBDF2171FD2205DFC1E1F5C5D5E53AFADFA7C294FD3C32FADFEF
|
||||
:201D8000D3603E25D3793EFDD3753E61D374FBE1D1C1F1C9AF32FADF2AFBDF7EA7C2C6FD68
|
||||
:201DA0003EFFD375AF32FFDF3E76D3633E96D3633E0DD3623EFFD3753E20D3742100E0221E
|
||||
:201DC00005DFFBC38FFDF2D0FD32FFDF23C39BFDE6700F0F0F0F4F3AFDDF81E6074F7E2333
|
||||
:201DE00022FBDFE60FFE0DF20EFE3D075F1600211AFE1956235E0DCA04FEA77A1F577B1FFD
|
||||
:201E00005FC3F6FD7BD3617AD3613E05D3793AFFDFE67F073DD360C386FDEEEAE178D4E0A2
|
||||
:201E2000C8D6BDA0B2FBA8EB9F7096888E0C86017DE1905B9051A06500885B003EAFD31A2D
|
||||
:201E40003EFFD31B07D31B07D31B07D31B07D31B07D31B07D31B07D31BC93EFFD31BD31BC2
|
||||
:201E6000D31BD31BD31BD31BD31BD31BDB1BC92100001100004FCD40FE79CD42FE7ACD4274
|
||||
:201E8000FE7BCD42FE7CCD42FE7DCD42FE3E95CD42FE11808021204ECD5AFE4F92BB79D01F
|
||||
:201EA0002B7CB5C298FED601C9C5D5E511FF00CD95FEE1D1C1C9CD3DFE0610CD40FE05C2B3
|
||||
:201EC000BBFECD3CFE3E40CD6FFEFE01C03E77CD6FFEE6FEC03E69CD6FFEFE01CACDFEB70C
|
||||
:201EE000C9CDA9FED8E5EB295C65AF576F3E51CD75FEE1D80600E51101FFCD95FEE1FEFEDD
|
||||
:201F0000C0CD5AFE7723CD5AFE772305C201FFC93E02D36A3A8028E604C0AFD36ACD24FF0E
|
||||
:201F2000DA3DFEE9CDB6FE37C01100002100C0CDE1FED8CD42FFD02AC6C1EB2100C0CDE1AC
|
||||
:201F4000FED8CDBAFF37C02A16C0EB2A0EC03A10C0193DC251FFEB2A1CC01922F0C1EB2AE7
|
||||
:201F600011C04D4429292929E579E60FC5CC9EFFD5E5060B11CBFF1ABEC2AAFF132305C2F4
|
||||
:201F800077FFC1C1C1110F00195E23561B1B2AF0C13A0DC0193DC294FFD15A5719EBD52139
|
||||
:201FA00000C2E5CDE1FEE1D113C9E111200019D1C10B78B1C269FFC137C92136C07E23FEAE
|
||||
:201FC00046C07E23FE41C07EFE54C9424F4F5420202020524F4D0000000000000000000020
|
||||
:201FE00000000000000000001B592C2C2DDEE8D8D1DAD020D7D0D3E0E3D7DAD82D00FFF6C7
|
||||
:00000001FF
|
||||
@@ -7,7 +7,7 @@ module SDRAM_Controller(
|
||||
input clk100, // Clock 100MHz
|
||||
input reset, // System reset
|
||||
inout [15:0] DRAM_DQ, // SDRAM Data bus 16 Bits
|
||||
output reg[11:0] DRAM_ADDR, // SDRAM Address bus 12 Bits
|
||||
output reg[12:0] DRAM_ADDR, // SDRAM Address bus 12 Bits
|
||||
output reg DRAM_LDQM, // SDRAM Low-byte Data Mask
|
||||
output reg DRAM_UDQM, // SDRAM High-byte Data Mask
|
||||
output reg DRAM_WE_N, // SDRAM Write Enable
|
||||
@@ -17,7 +17,7 @@ module SDRAM_Controller(
|
||||
output DRAM_BA_0, // SDRAM Bank Address 0
|
||||
output DRAM_BA_1, // SDRAM Bank Address 0
|
||||
input [21:0] iaddr,
|
||||
input [7:0] idata,
|
||||
input [15:0] idata,
|
||||
input rd,
|
||||
input we_n,
|
||||
output reg [15:0] odata,
|
||||
@@ -50,17 +50,17 @@ reg[15:0] data;
|
||||
reg exrd,exwen;
|
||||
reg ubn,lbn,rdvid;
|
||||
|
||||
assign DRAM_DQ[7:0] = (state==ST_WRITE0) ? data : 8'bZZZZZZZZ;
|
||||
assign DRAM_DQ[15:8] = (state == ST_WRITE0) ? data : 8'bZZZZZZZZ;
|
||||
assign DRAM_DQ[7:0] = (state==ST_WRITE0) ? data[7:0] : 8'bZZZZZZZZ;
|
||||
assign DRAM_DQ[15:8] = (state == ST_WRITE0) ? data[7:0] : 8'bZZZZZZZZ;
|
||||
assign DRAM_CS_N = 1'b0;
|
||||
assign DRAM_BA_0 = addr[20];
|
||||
assign DRAM_BA_1 = addr[21];
|
||||
|
||||
always @(*) begin
|
||||
case (state)
|
||||
ST_RESET0: DRAM_ADDR = 12'b100000;
|
||||
ST_RAS0: DRAM_ADDR = addr[19:8];
|
||||
default: DRAM_ADDR = {4'b0100,addr[7:0]};
|
||||
ST_RESET0: DRAM_ADDR = 13'b100000;
|
||||
ST_RAS0: DRAM_ADDR = addr[20:8];
|
||||
default: DRAM_ADDR = {5'b00100,addr[7:0]};
|
||||
endcase
|
||||
case (state)
|
||||
ST_RESET0: {DRAM_RAS_N,DRAM_CAS_N,DRAM_WE_N} = 3'b000;
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
module b2m_mist
|
||||
(
|
||||
input CLOCK_27,
|
||||
module b2m_mist(
|
||||
input CLOCK_27,
|
||||
output LED,
|
||||
output SPI_DO,
|
||||
input SPI_DI,
|
||||
@@ -9,17 +8,17 @@ module b2m_mist
|
||||
input SPI_SS3,
|
||||
input SPI_SS4,
|
||||
input CONF_DATA0,
|
||||
inout [15:0] SDRAM_DQ, // SDRAM Data bus 16 Bits
|
||||
output [12:0] SDRAM_A, // SDRAM Address bus 13 Bits
|
||||
output SDRAM_DQML, // SDRAM Low-byte Data Mask
|
||||
output SDRAM_DQMH, // SDRAM High-byte Data Mask
|
||||
output SDRAM_nWE, // SDRAM Write Enable
|
||||
output SDRAM_nCAS, // SDRAM Column Address Strobe
|
||||
output SDRAM_nRAS, // SDRAM Row Address Strobe
|
||||
output SDRAM_nCS, // SDRAM Chip Select
|
||||
output [1:0] SDRAM_BA, // SDRAM Bank Address
|
||||
output SDRAM_CLK, // SDRAM Clock
|
||||
output SDRAM_CKE, // SDRAM Clock Enable
|
||||
inout [15:0] SDRAM_DQ,
|
||||
output [12:0] SDRAM_A,
|
||||
output SDRAM_DQML,
|
||||
output SDRAM_DQMH,
|
||||
output SDRAM_nWE,
|
||||
output SDRAM_nCAS,
|
||||
output SDRAM_nRAS,
|
||||
output SDRAM_nCS,
|
||||
output [1:0] SDRAM_BA,
|
||||
output SDRAM_CLK,
|
||||
output SDRAM_CKE,
|
||||
output AUDIO_L,
|
||||
output AUDIO_R,
|
||||
output VGA_HS,
|
||||
@@ -33,34 +32,28 @@ module b2m_mist
|
||||
`include "rtl\build_id.v"
|
||||
|
||||
localparam CONF_STR = {
|
||||
"B2M;;",
|
||||
"Bashkiria 2M;;",
|
||||
"O2,Turbo ,ON,OFF;",
|
||||
"O3,Color Mode ,COLOR,B/W;",
|
||||
"O4,Video Mode ,PAL,NTSC;",
|
||||
"O56,Scandoubler Fx,None,HQ2x,CRT 25%,CRT 50%;",
|
||||
"O56,Scandoubler Fx,None,CRT 25%,CRT 50%,CRT 75%;",
|
||||
"T7,Reset;",
|
||||
"V,v1.00.",`BUILD_DATE
|
||||
};
|
||||
|
||||
assign LED = 1'b1;
|
||||
assign AUDIO_R = AUDIO_L;
|
||||
|
||||
wire clk_sys;
|
||||
wire clk12p5;
|
||||
wire clk100;
|
||||
wire [31:0] status;
|
||||
wire [1:0] buttons;
|
||||
wire [1:0] switches;
|
||||
wire [7:0] kbjoy;
|
||||
|
||||
wire [7:0] joystick_0;
|
||||
wire [7:0] joystick_1;
|
||||
wire scandoubler_disable;
|
||||
wire scandoublerD;
|
||||
wire ypbpr;
|
||||
wire ps2_kbd_clk, ps2_kbd_data;
|
||||
wire ps2_kbd_clk;
|
||||
wire ps2_kbd_data;
|
||||
wire [15:0] audio;
|
||||
//assign LED = 1;
|
||||
|
||||
wire hblank, vblank;
|
||||
wire ce_vid;
|
||||
wire hs, vs;
|
||||
wire [3:0] r,g,b;
|
||||
|
||||
@@ -68,102 +61,11 @@ wire [3:0] r,g,b;
|
||||
pll pll(
|
||||
.inclk0(CLOCK_27),
|
||||
.c0(clk_sys),//50
|
||||
.c1(clk12p5)
|
||||
);
|
||||
|
||||
video_mixer #(.LINE_LENGTH(800), .HALF_DEPTH(0)) video_mixer(
|
||||
.clk_sys(clk_sys),
|
||||
.ce_pix(clk12p5),
|
||||
.ce_pix_actual(clk12p5),
|
||||
.SPI_SCK(SPI_SCK),
|
||||
.SPI_SS3(SPI_SS3),
|
||||
.SPI_DI(SPI_DI),
|
||||
.R({r,r[1:0]}),
|
||||
.G({g,g[1:0]}),
|
||||
.B({b,b[1: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),
|
||||
.scandoubler_disable(1),//scandoubler_disable),
|
||||
.scanlines(scandoubler_disable ? 2'b00 : {status[6:5] == 3, status[6:5] == 2}),
|
||||
.hq2x(status[6:5]==1),
|
||||
.ypbpr_full(1),
|
||||
.line_start(0),
|
||||
.mono(0)
|
||||
);
|
||||
|
||||
mist_io #(.STRLEN(($size(CONF_STR)>>3))) mist_io(
|
||||
.clk_sys (clk_sys ),
|
||||
.conf_str (CONF_STR ),
|
||||
.SPI_SCK (SPI_SCK ),
|
||||
.CONF_DATA0 (CONF_DATA0 ),
|
||||
.SPI_SS2 (SPI_SS2 ),
|
||||
.SPI_DO (SPI_DO ),
|
||||
.SPI_DI (SPI_DI ),
|
||||
.buttons (buttons ),
|
||||
.switches (switches ),
|
||||
.scandoubler_disable(scandoubler_disable),
|
||||
.ypbpr (ypbpr ),
|
||||
.ps2_kbd_clk (ps2_kbd_clk ),
|
||||
.ps2_kbd_data (ps2_kbd_data ),
|
||||
.joystick_0 (joystick_0 ),
|
||||
.joystick_1 (joystick_1 ),
|
||||
.status (status ),
|
||||
.sd_lba (sd_lba ),
|
||||
.sd_rd (sd_rd ),
|
||||
.sd_wr (sd_wr ),
|
||||
.sd_ack (sd_ack ),
|
||||
.sd_conf (sd_conf ),
|
||||
.sd_sdhc (sd_sdhc ),
|
||||
.sd_buff_dout (sd_data_out ),
|
||||
.sd_buff_din (sd_data_in ),
|
||||
.sd_dout_strobe (sd_data_in_strobe),
|
||||
.sd_din_strobe (sd_data_out_strobe)
|
||||
);
|
||||
|
||||
|
||||
wire [31:0] sd_lba;
|
||||
wire sd_rd;
|
||||
wire sd_wr;
|
||||
wire sd_ack;
|
||||
wire sd_conf;
|
||||
wire sd_sdhc;
|
||||
wire allow_sdhc;
|
||||
wire [7:0] sd_data_in;
|
||||
wire sd_data_in_strobe;
|
||||
wire [7:0] sd_data_out;
|
||||
wire sd_data_out_strobe;
|
||||
wire sd_cs;
|
||||
wire sd_sck;
|
||||
wire sd_sdi;
|
||||
wire sd_sdo;
|
||||
|
||||
sd_card sd_card(
|
||||
.io_lba (sd_lba),
|
||||
.io_rd (sd_rd),
|
||||
.io_wr (sd_wr),
|
||||
.io_ack (sd_ack),
|
||||
.io_conf (sd_conf),
|
||||
.io_sdhc (sd_sdhc),
|
||||
.io_din (sd_data_out),
|
||||
.io_din_strobe (sd_data_in_strobe),
|
||||
.io_dout (sd_data_in),
|
||||
.io_dout_strobe(sd_data_out_strobe),
|
||||
.allow_sdhc (allow_sdhc),
|
||||
.sd_cs (sd_cs),
|
||||
.sd_sck (sd_sck),
|
||||
.sd_sdi (sd_sdi),
|
||||
.sd_sdo (sd_sdo)
|
||||
);
|
||||
|
||||
|
||||
b2m_top b2m_top(
|
||||
.clk50mhz(clk_sys),
|
||||
.res(~(status[0] || status[7] || buttons[1])),
|
||||
.res(~(status[0] | status[7] | buttons[1])),
|
||||
.color_mode(~status[3] ),
|
||||
.video_mode(status[4] ),
|
||||
.turbo(~status[2] ),
|
||||
@@ -192,14 +94,95 @@ b2m_top b2m_top(
|
||||
.SD_CMD(sd_sdi),
|
||||
.SD_CLK(sd_sck)
|
||||
);
|
||||
|
||||
dac dac(
|
||||
|
||||
mist_video #(.COLOR_DEPTH(4), .SD_HCNT_WIDTH(9)) mist_video(
|
||||
.clk_sys ( clk_sys ),
|
||||
.SPI_SCK ( SPI_SCK ),
|
||||
.SPI_SS3 ( SPI_SS3 ),
|
||||
.SPI_DI ( SPI_DI ),
|
||||
.R ( r),
|
||||
.G ( g),
|
||||
.B ( b),
|
||||
.HSync ( hs ),
|
||||
.VSync ( vs ),
|
||||
.VGA_R ( VGA_R ),
|
||||
.VGA_G ( VGA_G ),
|
||||
.VGA_B ( VGA_B ),
|
||||
.VGA_VS ( VGA_VS ),
|
||||
.VGA_HS ( VGA_HS ),
|
||||
.scandoubler_disable( 1'b1),//scandoublerD ),
|
||||
.scanlines ( status[6:5] ),
|
||||
.ce_divider (1),
|
||||
.ypbpr ( ypbpr )
|
||||
);
|
||||
|
||||
user_io #(.STRLEN(($size(CONF_STR)>>3))) user_io(
|
||||
.clk_sys (clk_sys ),
|
||||
.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 ),
|
||||
.ps2_kbd_clk (ps2_kbd_clk ),
|
||||
.ps2_kbd_data (ps2_kbd_data ),
|
||||
.status (status ),
|
||||
.sd_lba (sd_lba ),
|
||||
.sd_rd (sd_rd ),
|
||||
.sd_wr (sd_wr ),
|
||||
.sd_ack (sd_ack ),
|
||||
.sd_conf (sd_conf ),
|
||||
.sd_sdhc (sd_sdhc ),
|
||||
.sd_dout (sd_data_out ),
|
||||
.sd_din (sd_data_in ),
|
||||
.sd_dout_strobe (sd_data_in_strobe),
|
||||
.sd_din_strobe (sd_data_out_strobe)
|
||||
);
|
||||
|
||||
dac #(
|
||||
.C_bits(16))
|
||||
dac(
|
||||
.clk_i(clk_sys),
|
||||
.res_n_i(1),
|
||||
.dac_i(audio),
|
||||
.dac_o(AUDIO_L)
|
||||
);
|
||||
|
||||
assign AUDIO_R = AUDIO_L;
|
||||
);
|
||||
|
||||
wire [31:0] sd_lba;
|
||||
wire sd_rd;
|
||||
wire sd_wr;
|
||||
wire sd_ack;
|
||||
wire sd_conf;
|
||||
wire sd_sdhc;
|
||||
wire allow_sdhc;
|
||||
wire [7:0] sd_data_in;
|
||||
wire sd_data_in_strobe;
|
||||
wire [7:0] sd_data_out;
|
||||
wire sd_data_out_strobe;
|
||||
wire sd_cs;
|
||||
wire sd_sck;
|
||||
wire sd_sdi;
|
||||
wire sd_sdo;
|
||||
|
||||
sd_card sd_card(
|
||||
.io_lba (sd_lba),
|
||||
.io_rd (sd_rd),
|
||||
.io_wr (sd_wr),
|
||||
.io_ack (sd_ack),
|
||||
.io_conf (sd_conf),
|
||||
.io_sdhc (sd_sdhc),
|
||||
.io_din (sd_data_out),
|
||||
.io_din_strobe (sd_data_in_strobe),
|
||||
.io_dout (sd_data_in),
|
||||
.io_dout_strobe(sd_data_out_strobe),
|
||||
.allow_sdhc (allow_sdhc),
|
||||
.sd_cs (sd_cs),
|
||||
.sd_sck (sd_sck),
|
||||
.sd_sdi (sd_sdi),
|
||||
.sd_sdo (sd_sdo)
|
||||
);
|
||||
|
||||
endmodule
|
||||
|
||||
@@ -107,11 +107,10 @@ reg[7:0] mem_o;
|
||||
always @(negedge memvidbusy) vid_data <= dramout;
|
||||
always @(negedge memcpubusy) mem_o <= dramout[7:0];
|
||||
|
||||
|
||||
bios rom(
|
||||
.address(addrbus[12:0]),
|
||||
.clock(clk50mhz),
|
||||
.q(rom_o)
|
||||
.addr(addrbus[12:0]),
|
||||
.clk(clk50mhz),
|
||||
.data(rom_o)
|
||||
);
|
||||
|
||||
//////////////////// CPU ////////////////////
|
||||
@@ -161,7 +160,7 @@ wire cpu_ce = cpu_ce2;
|
||||
|
||||
always @(posedge clk50mhz) begin
|
||||
vidce2<=vidce;
|
||||
cpu_cnt <= cpu_cnt + 1;
|
||||
cpu_cnt <= cpu_cnt + 1'b1;
|
||||
if (cpu_sync) sysctl <= cpu_o;
|
||||
if (addrbus[0]&~sio_we_n) sound_on <= ~cpu_o[5];
|
||||
if(turbo==1 && {vidce2,vidce}==2'b01 && cpu_cnt>3){cpu_cnt,cpu_ce2}<={10'b0,~memcpubusy&~memvidbusy};
|
||||
@@ -333,7 +332,7 @@ always @(posedge clk50mhz) begin
|
||||
if (line6bit > 32) tapein <= 1'b1;
|
||||
end*/
|
||||
|
||||
//I2C_AV_Config sndcfg(.iCLK(clk50mhz), .iRST_N(reset_n), .I2C_SCLK(I2C_SCLK), .I2C_SDAT(I2C_SDAT));
|
||||
|
||||
|
||||
//////////////////// SD CARD ////////////////////
|
||||
reg sdcs;
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
set_global_assignment -name IP_TOOL_NAME "ROM: 1-PORT"
|
||||
set_global_assignment -name IP_TOOL_VERSION "13.1"
|
||||
set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "bios.v"]
|
||||
@@ -1,159 +0,0 @@
|
||||
// megafunction wizard: %ROM: 1-PORT%
|
||||
// GENERATION: STANDARD
|
||||
// VERSION: WM1.0
|
||||
// MODULE: altsyncram
|
||||
|
||||
// ============================================================
|
||||
// File Name: bios.v
|
||||
// Megafunction Name(s):
|
||||
// altsyncram
|
||||
//
|
||||
// Simulation Library Files(s):
|
||||
// altera_mf
|
||||
// ============================================================
|
||||
// ************************************************************
|
||||
// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE!
|
||||
//
|
||||
// 13.1.0 Build 162 10/23/2013 SJ Web Edition
|
||||
// ************************************************************
|
||||
|
||||
|
||||
//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.
|
||||
|
||||
|
||||
// synopsys translate_off
|
||||
`timescale 1 ps / 1 ps
|
||||
// synopsys translate_on
|
||||
module bios (
|
||||
address,
|
||||
clock,
|
||||
q);
|
||||
|
||||
input [12:0] address;
|
||||
input clock;
|
||||
output [7:0] q;
|
||||
`ifndef ALTERA_RESERVED_QIS
|
||||
// synopsys translate_off
|
||||
`endif
|
||||
tri1 clock;
|
||||
`ifndef ALTERA_RESERVED_QIS
|
||||
// synopsys translate_on
|
||||
`endif
|
||||
|
||||
wire [7:0] sub_wire0;
|
||||
wire [7:0] q = sub_wire0[7:0];
|
||||
|
||||
altsyncram altsyncram_component (
|
||||
.address_a (address),
|
||||
.clock0 (clock),
|
||||
.q_a (sub_wire0),
|
||||
.aclr0 (1'b0),
|
||||
.aclr1 (1'b0),
|
||||
.address_b (1'b1),
|
||||
.addressstall_a (1'b0),
|
||||
.addressstall_b (1'b0),
|
||||
.byteena_a (1'b1),
|
||||
.byteena_b (1'b1),
|
||||
.clock1 (1'b1),
|
||||
.clocken0 (1'b1),
|
||||
.clocken1 (1'b1),
|
||||
.clocken2 (1'b1),
|
||||
.clocken3 (1'b1),
|
||||
.data_a ({8{1'b1}}),
|
||||
.data_b (1'b1),
|
||||
.eccstatus (),
|
||||
.q_b (),
|
||||
.rden_a (1'b1),
|
||||
.rden_b (1'b1),
|
||||
.wren_a (1'b0),
|
||||
.wren_b (1'b0));
|
||||
defparam
|
||||
altsyncram_component.clock_enable_input_a = "BYPASS",
|
||||
altsyncram_component.clock_enable_output_a = "BYPASS",
|
||||
altsyncram_component.init_file = "./rtl/BIOS4.HEX",
|
||||
altsyncram_component.intended_device_family = "Cyclone II",
|
||||
altsyncram_component.lpm_hint = "ENABLE_RUNTIME_MOD=NO",
|
||||
altsyncram_component.lpm_type = "altsyncram",
|
||||
altsyncram_component.numwords_a = 8192,
|
||||
altsyncram_component.operation_mode = "ROM",
|
||||
altsyncram_component.outdata_aclr_a = "NONE",
|
||||
altsyncram_component.outdata_reg_a = "UNREGISTERED",
|
||||
altsyncram_component.widthad_a = 13,
|
||||
altsyncram_component.width_a = 8,
|
||||
altsyncram_component.width_byteena_a = 1;
|
||||
|
||||
|
||||
endmodule
|
||||
|
||||
// ============================================================
|
||||
// CNX file retrieval info
|
||||
// ============================================================
|
||||
// Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0"
|
||||
// Retrieval info: PRIVATE: AclrAddr NUMERIC "0"
|
||||
// Retrieval info: PRIVATE: AclrByte NUMERIC "0"
|
||||
// Retrieval info: PRIVATE: AclrOutput NUMERIC "0"
|
||||
// Retrieval info: PRIVATE: BYTE_ENABLE NUMERIC "0"
|
||||
// Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8"
|
||||
// Retrieval info: PRIVATE: BlankMemory NUMERIC "0"
|
||||
// Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0"
|
||||
// Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0"
|
||||
// Retrieval info: PRIVATE: Clken NUMERIC "0"
|
||||
// Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0"
|
||||
// Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A"
|
||||
// Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0"
|
||||
// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone II"
|
||||
// Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0"
|
||||
// Retrieval info: PRIVATE: JTAG_ID STRING "NONE"
|
||||
// Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0"
|
||||
// Retrieval info: PRIVATE: MIFfilename STRING "./rtl/BIOS4.HEX"
|
||||
// Retrieval info: PRIVATE: NUMWORDS_A NUMERIC "8192"
|
||||
// Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0"
|
||||
// Retrieval info: PRIVATE: RegAddr NUMERIC "1"
|
||||
// Retrieval info: PRIVATE: RegOutput NUMERIC "0"
|
||||
// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0"
|
||||
// Retrieval info: PRIVATE: SingleClock NUMERIC "1"
|
||||
// Retrieval info: PRIVATE: UseDQRAM NUMERIC "0"
|
||||
// Retrieval info: PRIVATE: WidthAddr NUMERIC "13"
|
||||
// Retrieval info: PRIVATE: WidthData NUMERIC "8"
|
||||
// Retrieval info: PRIVATE: rden NUMERIC "0"
|
||||
// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all
|
||||
// Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS"
|
||||
// Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS"
|
||||
// Retrieval info: CONSTANT: INIT_FILE STRING "./rtl/BIOS4.HEX"
|
||||
// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone II"
|
||||
// Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO"
|
||||
// Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram"
|
||||
// Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "8192"
|
||||
// Retrieval info: CONSTANT: OPERATION_MODE STRING "ROM"
|
||||
// Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE"
|
||||
// Retrieval info: CONSTANT: OUTDATA_REG_A STRING "UNREGISTERED"
|
||||
// Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "13"
|
||||
// Retrieval info: CONSTANT: WIDTH_A NUMERIC "8"
|
||||
// Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1"
|
||||
// Retrieval info: USED_PORT: address 0 0 13 0 INPUT NODEFVAL "address[12..0]"
|
||||
// Retrieval info: USED_PORT: clock 0 0 0 0 INPUT VCC "clock"
|
||||
// Retrieval info: USED_PORT: q 0 0 8 0 OUTPUT NODEFVAL "q[7..0]"
|
||||
// Retrieval info: CONNECT: @address_a 0 0 13 0 address 0 0 13 0
|
||||
// Retrieval info: CONNECT: @clock0 0 0 0 0 clock 0 0 0 0
|
||||
// Retrieval info: CONNECT: q 0 0 8 0 @q_a 0 0 8 0
|
||||
// Retrieval info: GEN_FILE: TYPE_NORMAL bios.v TRUE
|
||||
// Retrieval info: GEN_FILE: TYPE_NORMAL bios.inc FALSE
|
||||
// Retrieval info: GEN_FILE: TYPE_NORMAL bios.cmp FALSE
|
||||
// Retrieval info: GEN_FILE: TYPE_NORMAL bios.bsf FALSE
|
||||
// Retrieval info: GEN_FILE: TYPE_NORMAL bios_inst.v FALSE
|
||||
// Retrieval info: GEN_FILE: TYPE_NORMAL bios_bb.v FALSE
|
||||
// Retrieval info: GEN_FILE: TYPE_NORMAL bios_waveforms.html FALSE
|
||||
// Retrieval info: GEN_FILE: TYPE_NORMAL bios_wave*.jpg FALSE
|
||||
// Retrieval info: LIB_FILE: altera_mf
|
||||
534
Computer_MiST/Bashkiria2M_MiST/rtl/bios.vhd
Normal file
534
Computer_MiST/Bashkiria2M_MiST/rtl/bios.vhd
Normal file
@@ -0,0 +1,534 @@
|
||||
library ieee;
|
||||
use ieee.std_logic_1164.all,ieee.numeric_std.all;
|
||||
|
||||
entity bios is
|
||||
port (
|
||||
clk : in std_logic;
|
||||
addr : in std_logic_vector(12 downto 0);
|
||||
data : out std_logic_vector(7 downto 0)
|
||||
);
|
||||
end entity;
|
||||
|
||||
architecture prom of bios is
|
||||
type rom is array(0 to 8191) of std_logic_vector(7 downto 0);
|
||||
signal rom_data: rom := (
|
||||
X"C3",X"13",X"E0",X"C3",X"55",X"E8",X"C3",X"CB",X"F1",X"C3",X"72",X"E2",X"C3",X"CC",X"E2",X"C3",
|
||||
X"F5",X"F1",X"32",X"F3",X"3E",X"AA",X"D3",X"10",X"D3",X"11",X"D3",X"12",X"D3",X"13",X"3E",X"80",
|
||||
X"D3",X"6B",X"3E",X"30",X"D3",X"63",X"3E",X"76",X"D3",X"63",X"3E",X"94",X"D3",X"63",X"3E",X"0D",
|
||||
X"D3",X"62",X"3E",X"90",X"D3",X"47",X"3E",X"F0",X"D3",X"46",X"3E",X"15",X"D3",X"79",X"3E",X"40",
|
||||
X"D3",X"79",X"3E",X"FE",X"D3",X"79",X"3E",X"16",X"D3",X"74",X"3E",X"DF",X"D3",X"75",X"3E",X"FF",
|
||||
X"D3",X"75",X"AF",X"D3",X"6A",X"32",X"FE",X"DF",X"32",X"FF",X"DF",X"3E",X"C3",X"32",X"04",X"DF",
|
||||
X"21",X"13",X"E0",X"22",X"05",X"DF",X"FB",X"01",X"00",X"60",X"3E",X"E9",X"D3",X"61",X"3E",X"07",
|
||||
X"D3",X"61",X"3E",X"15",X"D3",X"79",X"0B",X"79",X"B0",X"C2",X"76",X"E0",X"3E",X"25",X"D3",X"79",
|
||||
X"01",X"FF",X"FF",X"0B",X"79",X"B0",X"C2",X"83",X"E0",X"31",X"00",X"DF",X"CD",X"66",X"EE",X"01",
|
||||
X"20",X"DF",X"21",X"26",X"DF",X"CD",X"55",X"F0",X"7A",X"FE",X"DC",X"CC",X"3C",X"F8",X"3A",X"FF",
|
||||
X"DF",X"B7",X"C2",X"9E",X"E0",X"31",X"00",X"DF",X"CD",X"10",X"FF",X"3E",X"25",X"D3",X"79",X"3E",
|
||||
X"FF",X"D3",X"75",X"3E",X"20",X"D3",X"74",X"CD",X"04",X"E9",X"21",X"19",X"E1",X"CD",X"C2",X"E3",
|
||||
X"21",X"25",X"E1",X"CD",X"C2",X"E3",X"31",X"00",X"DF",X"21",X"8C",X"E1",X"CD",X"C2",X"E3",X"CD",
|
||||
X"72",X"E2",X"21",X"C6",X"E0",X"E5",X"FE",X"3F",X"CA",X"AB",X"E0",X"FE",X"0D",X"C8",X"FE",X"53",
|
||||
X"CA",X"05",X"E2",X"FE",X"52",X"CA",X"53",X"E2",X"FE",X"57",X"CA",X"5A",X"E2",X"FE",X"4C",X"CA",
|
||||
X"6A",X"E3",X"FE",X"47",X"CA",X"41",X"E2",X"FE",X"59",X"CA",X"53",X"E3",X"FE",X"55",X"CA",X"60",
|
||||
X"E3",X"CD",X"07",X"E1",X"C3",X"C6",X"E0",X"21",X"0D",X"E1",X"C3",X"C2",X"E3",X"0D",X"0A",X"2D",
|
||||
X"DE",X"E8",X"D8",X"D1",X"DA",X"D0",X"2D",X"0D",X"00",X"1B",X"42",X"B7",X"B0",X"B3",X"C0",X"C3",
|
||||
X"B7",X"C7",X"B8",X"BA",X"00",X"C4",X"E3",X"DD",X"DA",X"E6",X"D8",X"D8",X"3A",X"0D",X"0A",X"53",
|
||||
X"2D",X"E3",X"E1",X"E2",X"D0",X"DD",X"DE",X"D2",X"DA",X"D0",X"20",X"EF",X"E7",X"D5",X"D9",X"DA",
|
||||
X"D8",X"0D",X"0A",X"4C",X"2D",X"D7",X"D0",X"D3",X"E0",X"E3",X"D7",X"DA",X"D0",X"20",X"D8",X"D7",
|
||||
X"20",X"BF",X"B7",X"C3",X"0D",X"0A",X"52",X"2D",X"E7",X"E2",X"D5",X"DD",X"D8",X"D5",X"20",X"E1",
|
||||
X"20",X"BC",X"BB",X"0D",X"0A",X"57",X"2D",X"D7",X"D0",X"DF",X"D8",X"E1",X"EC",X"20",X"DD",X"D0",
|
||||
X"20",X"BC",X"BB",X"0D",X"0A",X"47",X"2D",X"D2",X"EB",X"DF",X"DE",X"DB",X"DD",X"D8",X"E2",X"EC",
|
||||
X"20",X"DF",X"E0",X"DE",X"D3",X"E0",X"D0",X"DC",X"DC",X"E3",X"0D",X"00",X"0A",X"3E",X"00",X"0D",
|
||||
X"0A",X"BF",X"DE",X"D4",X"D3",X"DE",X"E2",X"DE",X"D2",X"EC",X"E2",X"D5",X"20",X"DC",X"D0",X"D3",
|
||||
X"DD",X"D8",X"E2",X"DE",X"E4",X"DE",X"DD",X"20",X"D4",X"DB",X"EF",X"20",X"00",X"B7",X"B0",X"BF",
|
||||
X"B8",X"C1",X"B8",X"00",X"C7",X"C2",X"B5",X"BD",X"B8",X"CF",X"00",X"0D",X"0A",X"D8",X"20",X"DD",
|
||||
X"D0",X"D6",X"DC",X"D8",X"E2",X"D5",X"20",X"3C",X"B2",X"BA",X"3E",X"00",X"0A",X"2A",X"B7",X"B0",
|
||||
X"BF",X"B8",X"C1",X"CC",X"2A",X"0D",X"00",X"0A",X"2A",X"C7",X"C2",X"B5",X"BD",X"B8",X"B5",X"2A",
|
||||
X"0D",X"00",X"0A",X"2A",X"DE",X"E8",X"D8",X"D1",X"DA",X"D0",X"20",X"BA",X"C1",X"2A",X"0D",X"00",
|
||||
X"0A",X"D2",X"EB",X"DA",X"DB",X"EE",X"E7",X"D8",X"20",X"DC",X"D0",X"D3",X"DD",X"D8",X"E2",X"DE",
|
||||
X"E4",X"DE",X"DD",X"0D",X"00",X"CD",X"CC",X"E2",X"3D",X"C2",X"01",X"E1",X"2A",X"1A",X"DF",X"CD",
|
||||
X"41",X"E3",X"E5",X"CD",X"46",X"E3",X"CD",X"4E",X"E3",X"E1",X"7E",X"E5",X"CD",X"D5",X"E3",X"CD",
|
||||
X"4E",X"E3",X"CD",X"72",X"E2",X"E1",X"FE",X"0D",X"CA",X"3D",X"E2",X"FE",X"2E",X"C8",X"E5",X"CD",
|
||||
X"CF",X"E2",X"2A",X"1A",X"DF",X"7C",X"B7",X"C2",X"01",X"E1",X"7D",X"E1",X"77",X"23",X"C3",X"0F",
|
||||
X"E2",X"CD",X"CC",X"E2",X"3D",X"C2",X"01",X"E1",X"31",X"00",X"DF",X"21",X"C6",X"E0",X"E5",X"2A",
|
||||
X"1A",X"DF",X"E9",X"CD",X"61",X"E2",X"CD",X"E2",X"EF",X"C9",X"CD",X"61",X"E2",X"CD",X"A8",X"EF",
|
||||
X"C9",X"CD",X"CC",X"E2",X"FE",X"02",X"C2",X"01",X"E1",X"2A",X"1A",X"DF",X"44",X"4D",X"2A",X"1C",
|
||||
X"DF",X"C9",X"11",X"DA",X"DF",X"06",X"00",X"CD",X"6F",X"E4",X"FE",X"0D",X"CA",X"89",X"E2",X"FE",
|
||||
X"7F",X"CA",X"9D",X"E2",X"FE",X"20",X"DA",X"77",X"E2",X"CD",X"CE",X"E3",X"12",X"13",X"FE",X"0D",
|
||||
X"CA",X"AC",X"E2",X"04",X"78",X"FE",X"20",X"CA",X"AC",X"E2",X"C3",X"77",X"E2",X"AF",X"B0",X"CA",
|
||||
X"77",X"E2",X"05",X"1B",X"3E",X"7F",X"CD",X"CE",X"E3",X"C3",X"77",X"E2",X"21",X"DA",X"DF",X"22",
|
||||
X"17",X"DF",X"78",X"32",X"16",X"DF",X"E5",X"21",X"16",X"DF",X"7E",X"B7",X"3E",X"0D",X"CA",X"CA",
|
||||
X"E2",X"35",X"2A",X"17",X"DF",X"7E",X"23",X"22",X"17",X"DF",X"E1",X"C9",X"CD",X"B6",X"E2",X"21",
|
||||
X"19",X"DF",X"36",X"00",X"23",X"FE",X"0D",X"CA",X"01",X"E3",X"CD",X"08",X"E3",X"CD",X"20",X"E3",
|
||||
X"FE",X"0D",X"CA",X"01",X"E3",X"CD",X"B6",X"E2",X"CD",X"08",X"E3",X"CD",X"20",X"E3",X"FE",X"0D",
|
||||
X"CA",X"01",X"E3",X"CD",X"B6",X"E2",X"CD",X"08",X"E3",X"CD",X"20",X"E3",X"FE",X"0D",X"C2",X"01",
|
||||
X"E1",X"11",X"19",X"DF",X"1A",X"13",X"B7",X"C9",X"EB",X"21",X"00",X"00",X"CD",X"2B",X"E3",X"29",
|
||||
X"29",X"29",X"29",X"B5",X"6F",X"CD",X"B6",X"E2",X"CD",X"38",X"E3",X"C2",X"0C",X"E3",X"EB",X"C9",
|
||||
X"73",X"23",X"72",X"23",X"E5",X"21",X"19",X"DF",X"34",X"E1",X"C9",X"D6",X"30",X"FE",X"0A",X"D8",
|
||||
X"C6",X"F9",X"FE",X"10",X"D8",X"C3",X"01",X"E1",X"FE",X"0D",X"C8",X"FE",X"2C",X"C8",X"FE",X"20",
|
||||
X"C9",X"3E",X"0A",X"C3",X"CE",X"E3",X"7C",X"CD",X"D5",X"E3",X"7D",X"C3",X"D5",X"E3",X"3E",X"20",
|
||||
X"C3",X"CE",X"E3",X"CD",X"61",X"E2",X"CD",X"44",X"E4",X"CD",X"F1",X"E3",X"C2",X"07",X"E1",X"C9",
|
||||
X"CD",X"61",X"E2",X"CD",X"44",X"E4",X"CD",X"1C",X"E4",X"C9",X"CD",X"CC",X"E2",X"FE",X"03",X"C2",
|
||||
X"01",X"E1",X"2A",X"1A",X"DF",X"44",X"4D",X"2A",X"1C",X"DF",X"E5",X"2A",X"1E",X"DF",X"54",X"5D",
|
||||
X"E1",X"3E",X"90",X"D3",X"47",X"7B",X"D3",X"45",X"7A",X"F6",X"C0",X"D3",X"46",X"7A",X"E6",X"C0",
|
||||
X"C2",X"A1",X"E3",X"3E",X"0C",X"D3",X"47",X"DB",X"44",X"F5",X"3E",X"0D",X"D3",X"47",X"C3",X"AC",
|
||||
X"E3",X"3E",X"0E",X"D3",X"47",X"DB",X"44",X"F5",X"3E",X"0F",X"D3",X"47",X"F1",X"02",X"13",X"CD",
|
||||
X"B6",X"E3",X"DA",X"85",X"E3",X"C9",X"78",X"94",X"DA",X"BF",X"E3",X"C0",X"79",X"95",X"D0",X"03",
|
||||
X"37",X"C9",X"F5",X"7E",X"CD",X"CE",X"E3",X"23",X"B7",X"C2",X"C3",X"E3",X"F1",X"C9",X"C5",X"4F",
|
||||
X"CD",X"D7",X"E7",X"C1",X"C9",X"F5",X"1F",X"1F",X"1F",X"1F",X"E6",X"0F",X"CD",X"E2",X"E3",X"F1",
|
||||
X"E6",X"0F",X"FE",X"0A",X"D2",X"EC",X"E3",X"C6",X"30",X"C3",X"CE",X"E3",X"C6",X"37",X"C3",X"CE",
|
||||
X"E3",X"C5",X"CD",X"65",X"E4",X"C0",X"DB",X"78",X"B7",X"C0",X"CD",X"65",X"E4",X"C0",X"DB",X"78",
|
||||
X"FE",X"FF",X"C0",X"CD",X"65",X"E4",X"C0",X"DB",X"78",X"02",X"CD",X"B6",X"E3",X"DA",X"03",X"E4",
|
||||
X"CD",X"65",X"E4",X"C0",X"DB",X"78",X"C1",X"CD",X"55",X"F0",X"BA",X"C9",X"C5",X"CD",X"55",X"F0",
|
||||
X"C1",X"D5",X"CD",X"5D",X"E4",X"AF",X"D3",X"78",X"CD",X"5D",X"E4",X"3E",X"FF",X"D3",X"78",X"CD",
|
||||
X"5D",X"E4",X"0A",X"D3",X"78",X"CD",X"B6",X"E3",X"DA",X"2F",X"E4",X"CD",X"5D",X"E4",X"DB",X"78",
|
||||
X"F1",X"D3",X"78",X"C9",X"3E",X"96",X"D3",X"63",X"3E",X"07",X"D3",X"62",X"3E",X"15",X"D3",X"79",
|
||||
X"3E",X"40",X"D3",X"79",X"3E",X"FE",X"D3",X"79",X"3E",X"27",X"D3",X"79",X"C9",X"DB",X"79",X"E6",
|
||||
X"05",X"CA",X"5D",X"E4",X"C9",X"DB",X"79",X"E6",X"3A",X"CA",X"65",X"E4",X"FE",X"02",X"C9",X"C5",
|
||||
X"D5",X"3E",X"FF",X"32",X"D7",X"DF",X"CD",X"AF",X"E4",X"FE",X"FF",X"CA",X"76",X"E4",X"4F",X"3A",
|
||||
X"45",X"DF",X"B7",X"CA",X"9D",X"E4",X"11",X"00",X"08",X"CD",X"FC",X"E6",X"CA",X"96",X"E4",X"1B",
|
||||
X"7B",X"B2",X"C2",X"89",X"E4",X"2F",X"32",X"45",X"DF",X"79",X"D1",X"C1",X"C9",X"11",X"00",X"20",
|
||||
X"C3",X"89",X"E4",X"AF",X"32",X"D7",X"DF",X"CD",X"AF",X"E4",X"FE",X"FF",X"C0",X"2F",X"C9",X"C5",
|
||||
X"D5",X"E5",X"3A",X"25",X"DF",X"B7",X"CA",X"CB",X"E4",X"2A",X"6E",X"DF",X"7E",X"32",X"25",X"DF",
|
||||
X"B7",X"CA",X"AC",X"E6",X"23",X"22",X"6E",X"DF",X"C3",X"B4",X"E6",X"3E",X"04",X"F5",X"06",X"58",
|
||||
X"16",X"00",X"1E",X"7F",X"21",X"01",X"28",X"F3",X"3E",X"02",X"D3",X"6A",X"4E",X"3A",X"FE",X"DF",
|
||||
X"D3",X"6A",X"FB",X"3E",X"01",X"F5",X"A1",X"C2",X"09",X"E5",X"14",X"7A",X"B8",X"FA",X"F5",X"E4",
|
||||
X"16",X"00",X"C3",X"13",X"E5",X"F1",X"07",X"D2",X"E5",X"E4",X"7D",X"07",X"D2",X"05",X"E5",X"21",
|
||||
X"01",X"29",X"C3",X"D7",X"E4",X"6F",X"C3",X"D7",X"E4",X"7B",X"FE",X"7F",X"C2",X"13",X"E5",X"5A",
|
||||
X"C3",X"EA",X"E4",X"F1",X"3A",X"D6",X"DF",X"BA",X"7A",X"32",X"D6",X"DF",X"CA",X"23",X"E5",X"F1",
|
||||
X"C3",X"CB",X"E4",X"F1",X"3D",X"C2",X"CD",X"E4",X"7B",X"FE",X"7F",X"CA",X"B2",X"E6",X"7A",X"B7",
|
||||
X"CA",X"63",X"E5",X"FE",X"38",X"FA",X"B2",X"E6",X"FE",X"40",X"7B",X"FA",X"4F",X"E5",X"FE",X"38",
|
||||
X"FA",X"B2",X"E6",X"FE",X"40",X"F2",X"B2",X"E6",X"CD",X"C7",X"E6",X"5A",X"C3",X"30",X"E6",X"FE",
|
||||
X"38",X"FA",X"5C",X"E5",X"FE",X"40",X"F2",X"B2",X"E6",X"C3",X"8B",X"E6",X"7A",X"CD",X"C7",X"E6",
|
||||
X"C3",X"7A",X"E5",X"06",X"00",X"7B",X"FE",X"38",X"FA",X"7A",X"E5",X"FE",X"40",X"F2",X"30",X"E6",
|
||||
X"FE",X"3C",X"C2",X"B2",X"E6",X"3E",X"1B",X"C3",X"B4",X"E6",X"16",X"00",X"3A",X"26",X"DF",X"4F",
|
||||
X"A8",X"E6",X"04",X"CA",X"8C",X"E5",X"2A",X"27",X"DF",X"C3",X"DF",X"E5",X"21",X"87",X"E7",X"78",
|
||||
X"00",X"E6",X"10",X"C2",X"DF",X"E5",X"7B",X"FE",X"20",X"D2",X"EA",X"E5",X"21",X"1F",X"E7",X"79",
|
||||
X"A8",X"06",X"00",X"E6",X"03",X"CA",X"D9",X"E5",X"FE",X"01",X"C2",X"CF",X"E5",X"7B",X"FE",X"05",
|
||||
X"CA",X"D9",X"E5",X"FE",X"07",X"CA",X"D9",X"E5",X"FE",X"0F",X"CA",X"D9",X"E5",X"FE",X"11",X"CA",
|
||||
X"D9",X"E5",X"FE",X"18",X"CA",X"D9",X"E5",X"FE",X"1B",X"CA",X"D9",X"E5",X"C3",X"D7",X"E5",X"21",
|
||||
X"67",X"E7",X"FE",X"02",X"CA",X"D9",X"E5",X"06",X"20",X"19",X"7E",X"80",X"C3",X"B4",X"E6",X"7B",
|
||||
X"06",X"00",X"FE",X"30",X"D2",X"B2",X"E6",X"C3",X"D9",X"E5",X"D6",X"20",X"FE",X"10",X"D2",X"20",
|
||||
X"E6",X"5F",X"FE",X"0B",X"C2",X"0B",X"E6",X"79",X"A8",X"E6",X"02",X"CA",X"0B",X"E6",X"79",X"A8",
|
||||
X"E6",X"01",X"3E",X"F1",X"C2",X"B4",X"E6",X"3D",X"C3",X"B4",X"E6",X"79",X"A8",X"06",X"00",X"E6",
|
||||
X"01",X"C2",X"1A",X"E6",X"21",X"3F",X"E7",X"C3",X"D9",X"E5",X"21",X"57",X"E7",X"C3",X"D9",X"E5",
|
||||
X"D6",X"10",X"FE",X"08",X"D2",X"B2",X"E6",X"5F",X"21",X"4F",X"E7",X"06",X"00",X"C3",X"D9",X"E5",
|
||||
X"3A",X"26",X"DF",X"4F",X"7B",X"16",X"00",X"D6",X"40",X"FE",X"10",X"DA",X"5C",X"E6",X"D6",X"18",
|
||||
X"2F",X"3C",X"5F",X"79",X"A8",X"E6",X"01",X"C2",X"4C",X"E6",X"16",X"05",X"7B",X"82",X"11",X"0A",
|
||||
X"00",X"21",X"68",X"DF",X"19",X"3D",X"C2",X"54",X"E6",X"C3",X"BC",X"E4",X"5F",X"FE",X"08",X"CA",
|
||||
X"6C",X"E6",X"FE",X"0A",X"CA",X"6C",X"E6",X"FE",X"0B",X"C2",X"76",X"E6",X"79",X"A8",X"E6",X"01",
|
||||
X"C2",X"83",X"E6",X"C3",X"7D",X"E6",X"79",X"A8",X"E6",X"08",X"C2",X"83",X"E6",X"21",X"B7",X"E7",
|
||||
X"C3",X"86",X"E6",X"21",X"C7",X"E7",X"06",X"00",X"C3",X"D9",X"E5",X"3A",X"D7",X"DF",X"B7",X"CA",
|
||||
X"B2",X"E6",X"7A",X"FE",X"39",X"7B",X"CA",X"9F",X"E6",X"FE",X"39",X"7A",X"C2",X"B2",X"E6",X"CD",
|
||||
X"C7",X"E6",X"3A",X"26",X"DF",X"A8",X"32",X"26",X"DF",X"CD",X"7F",X"EB",X"CD",X"FC",X"E6",X"C2",
|
||||
X"AC",X"E6",X"3E",X"FF",X"4F",X"FE",X"FF",X"CA",X"C3",X"E6",X"3A",X"26",X"DF",X"E6",X"10",X"C4",
|
||||
X"39",X"F8",X"79",X"E1",X"D1",X"C1",X"C9",X"06",X"00",X"FE",X"38",X"CA",X"D3",X"E6",X"FE",X"3F",
|
||||
X"C2",X"D6",X"E6",X"06",X"01",X"C9",X"FE",X"3E",X"C2",X"DE",X"E6",X"06",X"02",X"C9",X"FE",X"3D",
|
||||
X"C2",X"E6",X"E6",X"06",X"04",X"C9",X"FE",X"3B",X"C2",X"EE",X"E6",X"06",X"08",X"C9",X"FE",X"3A",
|
||||
X"C2",X"F6",X"E6",X"06",X"10",X"C9",X"FE",X"3C",X"C0",X"06",X"20",X"C9",X"F3",X"3E",X"02",X"D3",
|
||||
X"6A",X"3A",X"7F",X"28",X"B7",X"C2",X"14",X"E7",X"3A",X"80",X"28",X"E6",X"12",X"C2",X"14",X"E7",
|
||||
X"3A",X"FF",X"29",X"B7",X"3A",X"FE",X"DF",X"D3",X"6A",X"FB",X"3E",X"00",X"C8",X"2F",X"C9",X"55",
|
||||
X"41",X"54",X"4C",X"57",X"60",X"46",X"7E",X"4A",X"59",X"56",X"4B",X"52",X"51",X"42",X"7B",X"44",
|
||||
X"5B",X"45",X"4E",X"43",X"48",X"5A",X"47",X"7D",X"58",X"4F",X"5D",X"49",X"50",X"53",X"4D",X"2A",
|
||||
X"26",X"5E",X"25",X"24",X"23",X"40",X"5F",X"3C",X"27",X"2B",X"FF",X"21",X"7C",X"29",X"28",X"20",
|
||||
X"09",X"7F",X"1C",X"1D",X"03",X"1F",X"0D",X"38",X"37",X"36",X"35",X"34",X"33",X"32",X"2D",X"2C",
|
||||
X"3B",X"3D",X"FF",X"31",X"5C",X"30",X"39",X"B3",X"C4",X"B5",X"B4",X"C6",X"B1",X"B0",X"CE",X"BE",
|
||||
X"BD",X"BC",X"BB",X"BA",X"B9",X"B8",X"C5",X"B2",X"B6",X"C3",X"C2",X"C1",X"C0",X"CF",X"BF",X"CA",
|
||||
X"C7",X"C9",X"CD",X"C8",X"B7",X"CB",X"CC",X"15",X"01",X"14",X"0C",X"17",X"FF",X"06",X"FF",X"0A",
|
||||
X"19",X"16",X"0B",X"12",X"11",X"02",X"FF",X"04",X"1B",X"05",X"0E",X"03",X"08",X"1A",X"07",X"FF",
|
||||
X"18",X"0F",X"1D",X"09",X"10",X"13",X"0D",X"FF",X"FF",X"1E",X"FF",X"FF",X"FF",X"00",X"1F",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"1C",X"FF",X"FF",X"37",X"36",X"35",X"34",X"33",X"32",X"31",X"30",X"3F",
|
||||
X"2E",X"22",X"3E",X"FF",X"FF",X"39",X"38",X"0C",X"18",X"11",X"08",X"15",X"1A",X"16",X"17",X"2F",
|
||||
X"10",X"3A",X"2E",X"FF",X"FF",X"14",X"19",X"F3",X"F5",X"C5",X"D5",X"E5",X"CD",X"55",X"E8",X"21",
|
||||
X"4C",X"E8",X"E5",X"C3",X"35",X"DF",X"79",X"FE",X"1B",X"C2",X"F8",X"E7",X"3E",X"C3",X"32",X"35",
|
||||
X"DF",X"21",X"64",X"EC",X"22",X"36",X"DF",X"C9",X"FE",X"08",X"C2",X"02",X"E8",X"3E",X"12",X"C3",
|
||||
X"1B",X"E8",X"FE",X"0C",X"C2",X"0C",X"E8",X"3E",X"13",X"C3",X"1B",X"E8",X"FE",X"1B",X"D2",X"24",
|
||||
X"E8",X"FE",X"11",X"CA",X"24",X"E8",X"FE",X"10",X"DA",X"24",X"E8",X"C6",X"31",X"4F",X"CD",X"EC",
|
||||
X"E7",X"C3",X"35",X"DF",X"FE",X"7F",X"CA",X"7C",X"E8",X"FE",X"09",X"CA",X"85",X"E8",X"FE",X"0A",
|
||||
X"CA",X"C2",X"E8",X"FE",X"0D",X"CA",X"EA",X"E8",X"FE",X"1F",X"CA",X"04",X"E9",X"FE",X"07",X"CA",
|
||||
X"BE",X"E8",X"FE",X"20",X"D8",X"E1",X"CD",X"C9",X"E9",X"CD",X"9D",X"E9",X"CD",X"55",X"E8",X"E1",
|
||||
X"D1",X"C1",X"F1",X"FB",X"C9",X"F5",X"2A",X"38",X"DF",X"CD",X"48",X"EA",X"E5",X"3E",X"02",X"CD",
|
||||
X"6A",X"E8",X"E1",X"3E",X"03",X"CD",X"6A",X"E8",X"F1",X"C9",X"D3",X"6A",X"06",X"0A",X"7E",X"2F",
|
||||
X"77",X"2C",X"05",X"C2",X"6E",X"E8",X"3A",X"FE",X"DF",X"D3",X"6A",X"C9",X"CD",X"B4",X"E9",X"3E",
|
||||
X"20",X"CD",X"C9",X"E9",X"C9",X"3A",X"43",X"DF",X"47",X"3A",X"3E",X"DF",X"B8",X"CA",X"B7",X"E8",
|
||||
X"47",X"AF",X"B8",X"CA",X"99",X"E8",X"D2",X"9E",X"E8",X"C6",X"08",X"C3",X"92",X"E8",X"47",X"00",
|
||||
X"3A",X"43",X"DF",X"B8",X"DA",X"A8",X"E8",X"78",X"32",X"3E",X"DF",X"47",X"3A",X"3F",X"DF",X"4F",
|
||||
X"CD",X"C3",X"ED",X"22",X"38",X"DF",X"C9",X"CD",X"EA",X"E8",X"CD",X"C2",X"E8",X"C9",X"CD",X"39",
|
||||
X"F8",X"C9",X"3A",X"41",X"DF",X"47",X"3A",X"3F",X"DF",X"FE",X"17",X"CA",X"DF",X"E8",X"B8",X"C8",
|
||||
X"3C",X"32",X"3F",X"DF",X"2A",X"38",X"DF",X"7D",X"C6",X"0A",X"6F",X"22",X"38",X"DF",X"C9",X"3A",
|
||||
X"26",X"DF",X"E6",X"20",X"CA",X"EC",X"EA",X"C2",X"88",X"E9",X"3A",X"42",X"DF",X"47",X"3A",X"3E",
|
||||
X"DF",X"B8",X"C8",X"2A",X"38",X"DF",X"90",X"25",X"3D",X"C2",X"F7",X"E8",X"78",X"32",X"3E",X"DF",
|
||||
X"22",X"38",X"DF",X"C9",X"F5",X"C5",X"D5",X"E5",X"21",X"06",X"44",X"22",X"3A",X"DF",X"21",X"EC",
|
||||
X"44",X"22",X"3C",X"DF",X"CD",X"6E",X"E9",X"CD",X"25",X"E9",X"CD",X"88",X"E9",X"CD",X"7F",X"EB",
|
||||
X"E1",X"D1",X"C1",X"F1",X"C9",X"E5",X"F5",X"3E",X"FF",X"D3",X"10",X"D3",X"11",X"D3",X"12",X"D3",
|
||||
X"13",X"21",X"00",X"40",X"E5",X"3E",X"02",X"CD",X"5D",X"E9",X"E1",X"3E",X"03",X"CD",X"5D",X"E9",
|
||||
X"3A",X"21",X"DF",X"D3",X"10",X"3A",X"22",X"DF",X"D3",X"11",X"3A",X"23",X"DF",X"D3",X"12",X"3A",
|
||||
X"24",X"DF",X"D3",X"13",X"AF",X"32",X"44",X"DF",X"D3",X"69",X"F1",X"E1",X"C9",X"D3",X"6A",X"36",
|
||||
X"00",X"23",X"7C",X"FE",X"70",X"C2",X"5F",X"E9",X"3A",X"FE",X"DF",X"D3",X"6A",X"C9",X"AF",X"32",
|
||||
X"42",X"DF",X"32",X"40",X"DF",X"3E",X"27",X"32",X"43",X"DF",X"3E",X"17",X"32",X"41",X"DF",X"3A",
|
||||
X"26",X"DF",X"E6",X"1F",X"32",X"26",X"DF",X"C9",X"3A",X"42",X"DF",X"32",X"3E",X"DF",X"47",X"3A",
|
||||
X"40",X"DF",X"32",X"3F",X"DF",X"4F",X"CD",X"C3",X"ED",X"22",X"38",X"DF",X"C9",X"3A",X"43",X"DF",
|
||||
X"47",X"3A",X"3E",X"DF",X"B8",X"CA",X"B7",X"E8",X"3C",X"32",X"3E",X"DF",X"2A",X"38",X"DF",X"24",
|
||||
X"22",X"38",X"DF",X"C9",X"3A",X"42",X"DF",X"47",X"3A",X"3E",X"DF",X"B8",X"C8",X"3D",X"32",X"3E",
|
||||
X"DF",X"2A",X"38",X"DF",X"25",X"22",X"38",X"DF",X"C9",X"F5",X"AF",X"32",X"D9",X"DF",X"CD",X"48",
|
||||
X"EA",X"11",X"D9",X"DF",X"06",X"01",X"CD",X"5A",X"EA",X"F1",X"CD",X"EB",X"E9",X"06",X"08",X"CD",
|
||||
X"5A",X"EA",X"06",X"01",X"11",X"D9",X"DF",X"CD",X"5A",X"EA",X"C9",X"E5",X"21",X"32",X"EA",X"E5",
|
||||
X"01",X"29",X"DF",X"FE",X"40",X"D2",X"FB",X"E9",X"D6",X"20",X"C9",X"03",X"03",X"FE",X"60",X"D2",
|
||||
X"05",X"EA",X"D6",X"40",X"C9",X"03",X"03",X"FE",X"80",X"D2",X"0F",X"EA",X"D6",X"60",X"C9",X"03",
|
||||
X"03",X"FE",X"B0",X"D2",X"19",X"EA",X"D6",X"80",X"C9",X"03",X"03",X"FE",X"D0",X"D2",X"23",X"EA",
|
||||
X"D6",X"B0",X"C9",X"03",X"03",X"FE",X"F3",X"D2",X"2D",X"EA",X"D6",X"D0",X"C9",X"01",X"29",X"DF",
|
||||
X"AF",X"E1",X"F5",X"0A",X"6F",X"03",X"0A",X"67",X"F1",X"11",X"08",X"00",X"B7",X"CA",X"45",X"EA",
|
||||
X"19",X"3D",X"C3",X"3C",X"EA",X"EB",X"E1",X"C9",X"D5",X"F5",X"2A",X"38",X"DF",X"EB",X"2A",X"3A",
|
||||
X"DF",X"7D",X"83",X"6F",X"7C",X"82",X"67",X"F1",X"D1",X"C9",X"1A",X"4F",X"D5",X"11",X"D5",X"EA",
|
||||
X"D5",X"3A",X"20",X"DF",X"FE",X"01",X"C2",X"6D",X"EA",X"16",X"00",X"59",X"C9",X"FE",X"02",X"C2",
|
||||
X"76",X"EA",X"51",X"1E",X"00",X"C9",X"FE",X"03",X"C2",X"7E",X"EA",X"51",X"59",X"C9",X"FE",X"04",
|
||||
X"C2",X"89",X"EA",X"16",X"00",X"79",X"2F",X"5F",X"C9",X"FE",X"06",X"C2",X"93",X"EA",X"51",X"79",
|
||||
X"2F",X"5F",X"C9",X"FE",X"07",X"C2",X"9C",X"EA",X"51",X"1E",X"FF",X"C9",X"FE",X"08",X"C2",X"A7",
|
||||
X"EA",X"79",X"2F",X"57",X"1E",X"00",X"C9",X"FE",X"09",X"C2",X"B1",X"EA",X"79",X"2F",X"57",X"59",
|
||||
X"C9",X"FE",X"0B",X"C2",X"BA",X"EA",X"16",X"FF",X"59",X"C9",X"FE",X"0C",X"C2",X"C4",X"EA",X"79",
|
||||
X"2F",X"57",X"5F",X"C9",X"FE",X"0D",X"C2",X"CF",X"EA",X"79",X"2F",X"57",X"1E",X"FF",X"C9",X"D1",
|
||||
X"16",X"FF",X"79",X"2F",X"5F",X"3E",X"02",X"D3",X"6A",X"72",X"3E",X"03",X"D3",X"6A",X"73",X"3A",
|
||||
X"FE",X"DF",X"D3",X"6A",X"D1",X"13",X"2C",X"05",X"C2",X"5A",X"EA",X"C9",X"21",X"00",X"00",X"39",
|
||||
X"22",X"EC",X"DF",X"21",X"EC",X"DF",X"F9",X"2A",X"3C",X"DF",X"7D",X"C6",X"0A",X"6F",X"22",X"3C",
|
||||
X"DF",X"3E",X"02",X"F5",X"D3",X"6A",X"06",X"1A",X"E5",X"0E",X"28",X"36",X"00",X"24",X"0D",X"C2",
|
||||
X"0B",X"EB",X"E1",X"2C",X"05",X"C2",X"08",X"EB",X"F1",X"3D",X"CA",X"2F",X"EB",X"F5",X"3E",X"06",
|
||||
X"32",X"07",X"EB",X"2A",X"3A",X"DF",X"7D",X"C6",X"04",X"6F",X"3E",X"03",X"C3",X"04",X"EB",X"3E",
|
||||
X"1A",X"32",X"07",X"EB",X"2A",X"3C",X"DF",X"E5",X"D1",X"7D",X"C6",X"0A",X"6F",X"DB",X"74",X"E6",
|
||||
X"01",X"C2",X"3D",X"EB",X"3A",X"44",X"DF",X"C6",X"0A",X"D3",X"69",X"32",X"44",X"DF",X"3E",X"03",
|
||||
X"D3",X"6A",X"06",X"0A",X"E5",X"D5",X"0E",X"28",X"1A",X"77",X"AF",X"12",X"14",X"24",X"0D",X"C2",
|
||||
X"58",X"EB",X"D1",X"E1",X"2C",X"1C",X"05",X"C2",X"54",X"EB",X"2A",X"3A",X"DF",X"7D",X"C6",X"0A",
|
||||
X"6F",X"22",X"3A",X"DF",X"2A",X"EC",X"DF",X"F9",X"3A",X"FE",X"DF",X"D3",X"6A",X"C9",X"0D",X"F5",
|
||||
X"C5",X"D5",X"E5",X"3A",X"20",X"DF",X"F5",X"3E",X"04",X"32",X"20",X"DF",X"21",X"46",X"DF",X"3A",
|
||||
X"26",X"DF",X"E6",X"04",X"C2",X"B1",X"EB",X"3A",X"26",X"DF",X"E6",X"02",X"C2",X"A8",X"EB",X"01",
|
||||
X"52",X"EC",X"CD",X"44",X"EC",X"C3",X"B7",X"EB",X"01",X"55",X"EC",X"CD",X"44",X"EC",X"C3",X"B7",
|
||||
X"EB",X"01",X"58",X"EC",X"CD",X"44",X"EC",X"36",X"2F",X"23",X"3A",X"26",X"DF",X"E6",X"01",X"CA",
|
||||
X"C7",X"EB",X"36",X"48",X"C3",X"C9",X"EB",X"36",X"42",X"23",X"36",X"50",X"23",X"36",X"2F",X"23",
|
||||
X"3A",X"26",X"DF",X"E6",X"08",X"C2",X"DE",X"EB",X"01",X"5B",X"EC",X"C3",X"E1",X"EB",X"01",X"5E",
|
||||
X"EC",X"CD",X"44",X"EC",X"3A",X"26",X"DF",X"E6",X"20",X"C2",X"F8",X"EB",X"36",X"2F",X"23",X"01",
|
||||
X"61",X"EC",X"CD",X"44",X"EC",X"C3",X"01",X"EC",X"36",X"20",X"23",X"01",X"4F",X"EC",X"CD",X"44",
|
||||
X"EC",X"06",X"28",X"11",X"46",X"DF",X"AF",X"32",X"D9",X"DF",X"2A",X"38",X"DF",X"E5",X"2A",X"3C",
|
||||
X"DF",X"3E",X"0B",X"85",X"6F",X"22",X"38",X"DF",X"C5",X"E5",X"D5",X"11",X"D9",X"DF",X"06",X"01",
|
||||
X"CD",X"5A",X"EA",X"D1",X"1A",X"D5",X"CD",X"EB",X"E9",X"06",X"08",X"CD",X"5A",X"EA",X"D1",X"E1",
|
||||
X"24",X"C1",X"13",X"05",X"C2",X"15",X"EC",X"E1",X"22",X"38",X"DF",X"F1",X"32",X"20",X"DF",X"E1",
|
||||
X"D1",X"C1",X"F1",X"C9",X"16",X"03",X"0A",X"77",X"23",X"03",X"15",X"C2",X"46",X"EC",X"C9",X"20",
|
||||
X"20",X"20",X"BB",X"D0",X"E2",X"C0",X"E3",X"E1",X"B3",X"E0",X"E4",X"C6",X"E4",X"E0",X"C3",X"DF",
|
||||
X"BA",X"C0",X"E3",X"DB",X"79",X"D6",X"41",X"FE",X"1A",X"D2",X"AD",X"EC",X"5F",X"16",X"00",X"21",
|
||||
X"79",X"EC",X"19",X"19",X"5E",X"23",X"56",X"EB",X"E9",X"5E",X"EF",X"2E",X"ED",X"73",X"ED",X"79",
|
||||
X"ED",X"82",X"EF",X"8C",X"EF",X"7C",X"EF",X"6F",X"EF",X"6D",X"ED",X"52",X"ED",X"67",X"ED",X"7F",
|
||||
X"ED",X"AD",X"EC",X"66",X"EE",X"85",X"ED",X"E5",X"EE",X"AD",X"EC",X"AD",X"EC",X"AD",X"EC",X"B9",
|
||||
X"EC",X"1D",X"EE",X"AD",X"EC",X"EF",X"EC",X"0A",X"EF",X"9B",X"EE",X"AD",X"EC",X"3E",X"C3",X"32",
|
||||
X"35",X"DF",X"21",X"E6",X"E7",X"22",X"36",X"DF",X"C9",X"AF",X"32",X"D8",X"DF",X"21",X"C4",X"EC",
|
||||
X"22",X"36",X"DF",X"C9",X"3A",X"D8",X"DF",X"B7",X"C2",X"DE",X"EC",X"21",X"68",X"DF",X"79",X"32",
|
||||
X"D8",X"DF",X"11",X"0A",X"00",X"19",X"3D",X"C2",X"D5",X"EC",X"22",X"17",X"DF",X"C9",X"79",X"2A",
|
||||
X"17",X"DF",X"77",X"23",X"22",X"17",X"DF",X"B7",X"C0",X"32",X"D8",X"DF",X"C3",X"AD",X"EC",X"3E",
|
||||
X"03",X"32",X"D8",X"DF",X"21",X"01",X"ED",X"22",X"36",X"DF",X"21",X"29",X"DF",X"22",X"EC",X"DF",
|
||||
X"C9",X"3A",X"D8",X"DF",X"2A",X"EC",X"DF",X"FE",X"03",X"C2",X"1B",X"ED",X"F5",X"79",X"3D",X"07",
|
||||
X"5F",X"16",X"00",X"19",X"22",X"EC",X"DF",X"F1",X"C3",X"26",X"ED",X"FE",X"02",X"C2",X"24",X"ED",
|
||||
X"71",X"C3",X"26",X"ED",X"23",X"71",X"3D",X"32",X"D8",X"DF",X"C0",X"C3",X"AD",X"EC",X"CD",X"8E",
|
||||
X"EE",X"21",X"3E",X"ED",X"22",X"36",X"DF",X"21",X"55",X"DF",X"22",X"17",X"DF",X"C9",X"79",X"B7",
|
||||
X"CA",X"4C",X"ED",X"2A",X"17",X"DF",X"77",X"23",X"22",X"17",X"DF",X"C9",X"CD",X"7F",X"EB",X"C3",
|
||||
X"AD",X"EC",X"3A",X"40",X"DF",X"47",X"3A",X"3F",X"DF",X"B8",X"CA",X"AD",X"EC",X"3D",X"F5",X"3A",
|
||||
X"3E",X"DF",X"47",X"F1",X"C3",X"68",X"EF",X"CD",X"C2",X"E8",X"C3",X"AD",X"EC",X"CD",X"9D",X"E9",
|
||||
X"C3",X"AD",X"EC",X"CD",X"B4",X"E9",X"C3",X"AD",X"EC",X"CD",X"88",X"E9",X"C3",X"AD",X"EC",X"CD",
|
||||
X"6E",X"E9",X"C3",X"AD",X"EC",X"3A",X"20",X"DF",X"F5",X"0F",X"0F",X"E6",X"03",X"F5",X"3A",X"42",
|
||||
X"DF",X"47",X"3A",X"40",X"DF",X"4F",X"CD",X"C3",X"ED",X"11",X"06",X"44",X"19",X"F1",X"F5",X"E6",
|
||||
X"01",X"32",X"20",X"DF",X"E5",X"3E",X"02",X"32",X"D9",X"DF",X"CD",X"DC",X"ED",X"E1",X"F1",X"E6",
|
||||
X"02",X"32",X"20",X"DF",X"3E",X"03",X"32",X"D9",X"DF",X"CD",X"DC",X"ED",X"F1",X"32",X"20",X"DF",
|
||||
X"C3",X"AD",X"EC",X"21",X"00",X"00",X"78",X"B7",X"CA",X"D0",X"ED",X"24",X"3D",X"C2",X"CB",X"ED",
|
||||
X"79",X"B7",X"C8",X"7D",X"C6",X"0A",X"0D",X"C2",X"D4",X"ED",X"6F",X"C9",X"3A",X"42",X"DF",X"47",
|
||||
X"3A",X"43",X"DF",X"90",X"3C",X"4F",X"3A",X"40",X"DF",X"47",X"3A",X"41",X"DF",X"90",X"3C",X"47",
|
||||
X"C5",X"E5",X"3A",X"D9",X"DF",X"D3",X"6A",X"3A",X"20",X"DF",X"B7",X"C2",X"02",X"EE",X"57",X"C3",
|
||||
X"04",X"EE",X"16",X"FF",X"3E",X"0A",X"72",X"2C",X"3D",X"C2",X"06",X"EE",X"05",X"C2",X"04",X"EE",
|
||||
X"3A",X"FE",X"DF",X"D3",X"6A",X"E1",X"24",X"C1",X"0D",X"C2",X"F0",X"ED",X"C9",X"3E",X"04",X"32",
|
||||
X"D8",X"DF",X"21",X"31",X"EE",X"22",X"36",X"DF",X"3A",X"26",X"DF",X"F6",X"20",X"32",X"26",X"DF",
|
||||
X"C9",X"3A",X"D8",X"DF",X"F5",X"0D",X"21",X"5D",X"EE",X"E5",X"FE",X"04",X"C2",X"44",X"EE",X"79",
|
||||
X"32",X"42",X"DF",X"C9",X"FE",X"03",X"C2",X"4E",X"EE",X"79",X"32",X"40",X"DF",X"C9",X"FE",X"02",
|
||||
X"C2",X"58",X"EE",X"79",X"32",X"43",X"DF",X"C9",X"79",X"32",X"41",X"DF",X"E1",X"F1",X"3D",X"32",
|
||||
X"D8",X"DF",X"CA",X"79",X"ED",X"C9",X"3E",X"0A",X"01",X"F6",X"FF",X"21",X"D6",X"DF",X"09",X"77",
|
||||
X"23",X"36",X"00",X"2B",X"3D",X"C2",X"6E",X"EE",X"0E",X"15",X"11",X"93",X"EF",X"21",X"20",X"DF",
|
||||
X"1A",X"77",X"13",X"23",X"0D",X"C2",X"80",X"EE",X"CD",X"8E",X"EE",X"C3",X"AD",X"EC",X"21",X"54",
|
||||
X"DF",X"3E",X"1A",X"36",X"20",X"23",X"3D",X"C2",X"93",X"EE",X"C9",X"3E",X"02",X"32",X"D8",X"DF",
|
||||
X"21",X"A7",X"EE",X"22",X"36",X"DF",X"C9",X"3A",X"D8",X"DF",X"0D",X"F5",X"FE",X"02",X"C2",X"C1",
|
||||
X"EE",X"79",X"D6",X"20",X"FE",X"18",X"DA",X"BB",X"EE",X"3E",X"17",X"32",X"3F",X"DF",X"C3",X"CE",
|
||||
X"EE",X"79",X"D6",X"20",X"FE",X"28",X"DA",X"CB",X"EE",X"3E",X"27",X"32",X"3E",X"DF",X"F1",X"3D",
|
||||
X"32",X"D8",X"DF",X"C0",X"3A",X"3E",X"DF",X"47",X"3A",X"3F",X"DF",X"4F",X"CD",X"C3",X"ED",X"22",
|
||||
X"38",X"DF",X"C3",X"AD",X"EC",X"21",X"EC",X"EE",X"22",X"36",X"DF",X"C9",X"79",X"E6",X"0F",X"F5",
|
||||
X"F5",X"0F",X"0F",X"E6",X"03",X"47",X"F1",X"E6",X"03",X"B8",X"C2",X"03",X"EF",X"F1",X"3E",X"02",
|
||||
X"C3",X"04",X"EF",X"F1",X"32",X"20",X"DF",X"C3",X"AD",X"EC",X"3E",X"04",X"32",X"D8",X"DF",X"21",
|
||||
X"16",X"EF",X"22",X"36",X"DF",X"C9",X"3A",X"D8",X"DF",X"F5",X"21",X"55",X"EF",X"E5",X"FE",X"04",
|
||||
X"C2",X"2D",X"EF",X"79",X"FE",X"80",X"C8",X"32",X"22",X"DF",X"D3",X"11",X"C9",X"FE",X"03",X"C2",
|
||||
X"3C",X"EF",X"79",X"FE",X"80",X"C8",X"32",X"23",X"DF",X"D3",X"12",X"C9",X"FE",X"02",X"C2",X"4B",
|
||||
X"EF",X"79",X"FE",X"80",X"C8",X"32",X"24",X"DF",X"D3",X"13",X"C9",X"79",X"FE",X"80",X"C8",X"32",
|
||||
X"21",X"DF",X"D3",X"10",X"E1",X"F1",X"3D",X"32",X"D8",X"DF",X"CA",X"AD",X"EC",X"C9",X"3A",X"43",
|
||||
X"DF",X"32",X"3E",X"DF",X"47",X"3A",X"41",X"DF",X"32",X"3F",X"DF",X"4F",X"C3",X"DC",X"EE",X"3A",
|
||||
X"42",X"DF",X"32",X"3E",X"DF",X"47",X"3A",X"3F",X"DF",X"C3",X"6B",X"EF",X"3A",X"43",X"DF",X"C3",
|
||||
X"72",X"EF",X"3A",X"3E",X"DF",X"47",X"3A",X"40",X"DF",X"C3",X"68",X"EF",X"3A",X"3E",X"DF",X"47",
|
||||
X"C3",X"65",X"EF",X"02",X"FF",X"CD",X"1E",X"F0",X"00",X"00",X"1F",X"E7",X"EF",X"F2",X"EF",X"F3",
|
||||
X"EF",X"F4",X"EF",X"F2",X"EF",X"F5",X"EF",X"F6",X"F5",X"D5",X"E5",X"C5",X"CD",X"55",X"F0",X"21",
|
||||
X"8F",X"E1",X"CD",X"C2",X"E3",X"21",X"AD",X"E1",X"CD",X"C2",X"E3",X"21",X"BB",X"E1",X"CD",X"C2",
|
||||
X"E3",X"CD",X"6F",X"E4",X"FE",X"0D",X"CA",X"CE",X"EF",X"C1",X"E1",X"C3",X"2B",X"F0",X"21",X"CC",
|
||||
X"E1",X"CD",X"C2",X"E3",X"C1",X"E1",X"1E",X"B0",X"CD",X"63",X"F0",X"3E",X"0D",X"D3",X"62",X"C3",
|
||||
X"2B",X"F0",X"22",X"1E",X"DF",X"21",X"00",X"00",X"39",X"22",X"17",X"DF",X"2A",X"1E",X"DF",X"F5",
|
||||
X"D5",X"E5",X"C5",X"21",X"8F",X"E1",X"CD",X"C2",X"E3",X"21",X"B4",X"E1",X"CD",X"C2",X"E3",X"21",
|
||||
X"BB",X"E1",X"CD",X"C2",X"E3",X"CD",X"6F",X"E4",X"FE",X"0D",X"C2",X"C9",X"EF",X"21",X"D7",X"E1",
|
||||
X"CD",X"C2",X"E3",X"AF",X"C1",X"E1",X"CD",X"86",X"F0",X"F3",X"C2",X"47",X"F0",X"7A",X"CD",X"55",
|
||||
X"F0",X"BA",X"CA",X"2B",X"F0",X"21",X"E2",X"E1",X"CD",X"C2",X"E3",X"21",X"13",X"E0",X"22",X"05",
|
||||
X"DF",X"CD",X"38",X"F0",X"D1",X"F1",X"FB",X"C9",X"3E",X"FF",X"D3",X"75",X"3E",X"20",X"D3",X"74",
|
||||
X"21",X"F0",X"E1",X"CD",X"C2",X"E3",X"C9",X"21",X"B7",X"F1",X"CD",X"C2",X"E3",X"CD",X"38",X"F0",
|
||||
X"2A",X"17",X"DF",X"F9",X"C9",X"F5",X"16",X"00",X"0A",X"82",X"57",X"CD",X"B6",X"E3",X"DA",X"58",
|
||||
X"F0",X"F1",X"C9",X"F5",X"C5",X"E5",X"D5",X"C5",X"CD",X"AC",X"F0",X"7D",X"91",X"4F",X"7C",X"98",
|
||||
X"47",X"03",X"E1",X"56",X"CD",X"DB",X"F0",X"23",X"0B",X"78",X"B1",X"C2",X"73",X"F0",X"D1",X"CD",
|
||||
X"DB",X"F0",X"E1",X"C1",X"F1",X"C9",X"F5",X"C5",X"E5",X"E5",X"C5",X"CD",X"2D",X"F1",X"C1",X"E1",
|
||||
X"0B",X"03",X"C5",X"CD",X"5C",X"F1",X"C1",X"7A",X"02",X"79",X"AD",X"C2",X"91",X"F0",X"78",X"AC",
|
||||
X"C2",X"91",X"F0",X"C5",X"CD",X"5C",X"F1",X"C1",X"E1",X"C1",X"F1",X"C9",X"F3",X"E5",X"21",X"22",
|
||||
X"F1",X"22",X"05",X"DF",X"21",X"40",X"1F",X"3E",X"9E",X"D3",X"63",X"3E",X"02",X"D3",X"62",X"3E",
|
||||
X"10",X"D3",X"63",X"3E",X"FD",X"D3",X"75",X"3E",X"0D",X"CD",X"22",X"F1",X"3E",X"0C",X"76",X"3E",
|
||||
X"0D",X"76",X"2B",X"7C",X"B5",X"C2",X"CC",X"F0",X"E1",X"F3",X"C9",X"3E",X"0C",X"FB",X"76",X"3E",
|
||||
X"0C",X"76",X"3E",X"0D",X"76",X"3E",X"0D",X"76",X"3E",X"08",X"F5",X"3E",X"0C",X"76",X"7A",X"0F",
|
||||
X"57",X"3E",X"06",X"17",X"76",X"7A",X"07",X"57",X"3E",X"06",X"3F",X"17",X"76",X"7A",X"0F",X"57",
|
||||
X"3E",X"0D",X"76",X"F1",X"3D",X"C2",X"EA",X"F0",X"3E",X"0C",X"76",X"3E",X"0D",X"76",X"3E",X"0C",
|
||||
X"76",X"3E",X"0D",X"76",X"3E",X"0C",X"76",X"3E",X"0D",X"76",X"3E",X"0C",X"76",X"3E",X"0D",X"76",
|
||||
X"F3",X"C9",X"D3",X"6B",X"7B",X"D3",X"60",X"3E",X"61",X"D3",X"74",X"FB",X"C9",X"21",X"47",X"F0",
|
||||
X"22",X"05",X"DF",X"F3",X"3E",X"10",X"D3",X"63",X"3E",X"FD",X"D3",X"75",X"21",X"E8",X"03",X"CD",
|
||||
X"85",X"F1",X"2B",X"7C",X"B5",X"C2",X"3F",X"F1",X"44",X"5C",X"FB",X"CD",X"85",X"F1",X"09",X"1D",
|
||||
X"C2",X"4B",X"F1",X"24",X"24",X"24",X"7C",X"A7",X"1F",X"84",X"5F",X"C9",X"CD",X"85",X"F1",X"CD",
|
||||
X"85",X"F1",X"79",X"93",X"DA",X"5F",X"F1",X"06",X"08",X"16",X"00",X"CD",X"85",X"F1",X"79",X"93",
|
||||
X"D2",X"78",X"F1",X"F5",X"CD",X"85",X"F1",X"F1",X"7A",X"1F",X"57",X"05",X"C2",X"6B",X"F1",X"CD",
|
||||
X"85",X"F1",X"CD",X"85",X"F1",X"DB",X"74",X"E6",X"10",X"CA",X"85",X"F1",X"DB",X"74",X"E6",X"10",
|
||||
X"C2",X"8C",X"F1",X"AF",X"D3",X"63",X"DB",X"60",X"2F",X"4F",X"3E",X"10",X"D3",X"63",X"3E",X"FF",
|
||||
X"D3",X"60",X"C9",X"C5",X"D5",X"CD",X"5C",X"F1",X"7A",X"D1",X"C1",X"C9",X"F5",X"D5",X"1E",X"B0",
|
||||
X"51",X"CD",X"DB",X"F0",X"D1",X"F1",X"C9",X"0A",X"2A",X"20",X"DE",X"E8",X"D8",X"D1",X"DA",X"D0",
|
||||
X"20",X"E7",X"E2",X"D5",X"DD",X"D8",X"EF",X"20",X"2A",X"0D",X"00",X"11",X"00",X"00",X"01",X"00",
|
||||
X"C0",X"21",X"01",X"C0",X"CD",X"81",X"E3",X"2A",X"00",X"C0",X"7C",X"BD",X"C8",X"03",X"21",X"FF",
|
||||
X"C3",X"CD",X"81",X"E3",X"CD",X"59",X"E2",X"2A",X"00",X"C0",X"2B",X"7E",X"23",X"CD",X"C2",X"E3",
|
||||
X"B7",X"CA",X"2D",X"F2",X"57",X"06",X"00",X"CD",X"6F",X"E4",X"FE",X"0D",X"CA",X"20",X"F2",X"FE",
|
||||
X"19",X"C2",X"0E",X"F2",X"4F",X"78",X"B7",X"CA",X"F7",X"F1",X"05",X"C3",X"1A",X"F2",X"FE",X"1A",
|
||||
X"C2",X"F7",X"F1",X"4F",X"78",X"BA",X"CA",X"F7",X"F1",X"04",X"CD",X"D7",X"E7",X"C3",X"F7",X"F1",
|
||||
X"78",X"01",X"08",X"00",X"B7",X"CA",X"2D",X"F2",X"09",X"3D",X"C3",X"24",X"F2",X"5E",X"23",X"56",
|
||||
X"D5",X"23",X"4E",X"23",X"46",X"23",X"5E",X"23",X"56",X"D5",X"23",X"5E",X"23",X"56",X"EB",X"D1",
|
||||
X"CD",X"81",X"E3",X"CD",X"66",X"EE",X"E1",X"E9",X"DB",X"74",X"E6",X"04",X"C8",X"3E",X"FF",X"C9",
|
||||
X"F5",X"C5",X"CD",X"48",X"F2",X"CA",X"52",X"F2",X"79",X"FE",X"80",X"D4",X"6B",X"F2",X"2F",X"D3",
|
||||
X"68",X"3E",X"09",X"D3",X"6B",X"3D",X"D3",X"6B",X"C1",X"F1",X"C9",X"FE",X"F0",X"C2",X"75",X"F2",
|
||||
X"3E",X"B5",X"C3",X"7C",X"F2",X"FE",X"F1",X"C2",X"7C",X"F2",X"3E",X"D5",X"FE",X"D0",X"D2",X"88",
|
||||
X"F2",X"D6",X"B0",X"0E",X"00",X"C3",X"8C",X"F2",X"D6",X"D0",X"0E",X"01",X"E5",X"D5",X"21",X"A1",
|
||||
X"F2",X"16",X"00",X"5F",X"19",X"5E",X"79",X"B7",X"7B",X"C2",X"9E",X"F2",X"C6",X"20",X"D1",X"E1",
|
||||
X"C9",X"C1",X"C2",X"D7",X"C7",X"C4",X"C5",X"D6",X"DA",X"C9",X"CA",X"CB",X"CC",X"CD",X"CE",X"CF",
|
||||
X"D0",X"D2",X"D3",X"D4",X"D5",X"C6",X"C8",X"C3",X"DE",X"DB",X"DD",X"DF",X"D9",X"D8",X"DC",X"C0",
|
||||
X"D1",X"C5",X"0E",X"40",X"C3",X"CA",X"F2",X"C5",X"0E",X"80",X"F3",X"06",X"F6",X"3E",X"0B",X"D3",
|
||||
X"6B",X"3D",X"D3",X"6B",X"DB",X"74",X"04",X"A1",X"CA",X"D4",X"F2",X"78",X"A7",X"F2",X"EB",X"F2",
|
||||
X"2F",X"3C",X"FE",X"0A",X"06",X"00",X"FA",X"EB",X"F2",X"06",X"7F",X"78",X"C1",X"FB",X"C9",X"00",
|
||||
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"0C",X"1E",X"1E",X"0C",X"0C",X"00",X"0C",X"00",X"36",
|
||||
X"36",X"36",X"00",X"00",X"00",X"00",X"00",X"36",X"36",X"7F",X"36",X"7F",X"36",X"36",X"00",X"00",
|
||||
X"18",X"7C",X"06",X"3C",X"60",X"37",X"18",X"00",X"63",X"33",X"18",X"0C",X"66",X"63",X"00",X"1C",
|
||||
X"36",X"1C",X"6E",X"3B",X"33",X"6E",X"00",X"06",X"06",X"03",X"00",X"00",X"00",X"00",X"00",X"18",
|
||||
X"0C",X"06",X"06",X"06",X"0C",X"18",X"00",X"06",X"0C",X"18",X"18",X"18",X"0C",X"06",X"00",X"00",
|
||||
X"66",X"3C",X"FF",X"3C",X"66",X"00",X"00",X"00",X"0C",X"0C",X"3F",X"0C",X"0C",X"00",X"00",X"00",
|
||||
X"00",X"00",X"00",X"00",X"0C",X"0C",X"06",X"00",X"00",X"00",X"3F",X"00",X"00",X"00",X"00",X"00",
|
||||
X"00",X"00",X"00",X"00",X"0C",X"0C",X"00",X"60",X"30",X"18",X"0C",X"06",X"03",X"01",X"00",X"3E",
|
||||
X"63",X"73",X"7B",X"6F",X"67",X"3E",X"00",X"0C",X"0E",X"0C",X"0C",X"0C",X"0C",X"3F",X"00",X"1E",
|
||||
X"33",X"30",X"1C",X"06",X"33",X"3F",X"00",X"3F",X"33",X"18",X"1C",X"30",X"33",X"1E",X"00",X"38",
|
||||
X"3C",X"36",X"33",X"7F",X"30",X"78",X"00",X"3F",X"03",X"1F",X"30",X"30",X"33",X"1E",X"00",X"1C",
|
||||
X"06",X"03",X"1F",X"33",X"33",X"1E",X"00",X"3F",X"33",X"30",X"18",X"0C",X"0C",X"0C",X"00",X"1E",
|
||||
X"33",X"33",X"1E",X"33",X"33",X"1E",X"00",X"1E",X"33",X"33",X"3E",X"30",X"18",X"0E",X"00",X"00",
|
||||
X"0C",X"0C",X"00",X"00",X"0C",X"0C",X"00",X"00",X"0C",X"0C",X"00",X"00",X"0C",X"0C",X"06",X"18",
|
||||
X"0C",X"06",X"03",X"06",X"0C",X"18",X"00",X"00",X"00",X"3F",X"00",X"3F",X"00",X"00",X"00",X"06",
|
||||
X"0C",X"18",X"30",X"18",X"0C",X"06",X"00",X"1E",X"33",X"30",X"18",X"0C",X"00",X"0C",X"00",X"3E",
|
||||
X"63",X"7B",X"7B",X"03",X"1E",X"00",X"00",X"0C",X"1E",X"33",X"33",X"3F",X"33",X"33",X"00",X"3F",
|
||||
X"66",X"66",X"3E",X"66",X"66",X"3F",X"00",X"3C",X"66",X"03",X"03",X"03",X"66",X"3C",X"00",X"1F",
|
||||
X"36",X"66",X"66",X"66",X"36",X"1F",X"00",X"7F",X"46",X"16",X"1E",X"16",X"46",X"7F",X"00",X"7F",
|
||||
X"46",X"16",X"1E",X"16",X"06",X"0F",X"00",X"3C",X"66",X"03",X"03",X"73",X"66",X"7C",X"00",X"33",
|
||||
X"33",X"33",X"3F",X"33",X"33",X"33",X"00",X"1E",X"0C",X"0C",X"0C",X"0C",X"0C",X"1E",X"00",X"78",
|
||||
X"30",X"30",X"30",X"33",X"33",X"1E",X"00",X"67",X"66",X"36",X"1E",X"36",X"66",X"67",X"00",X"0F",
|
||||
X"06",X"06",X"06",X"46",X"66",X"7F",X"00",X"63",X"77",X"7F",X"7F",X"6B",X"63",X"63",X"00",X"63",
|
||||
X"67",X"6F",X"7B",X"73",X"63",X"63",X"00",X"1C",X"36",X"63",X"63",X"63",X"36",X"1C",X"00",X"3F",
|
||||
X"66",X"66",X"3E",X"06",X"06",X"0F",X"00",X"1E",X"33",X"33",X"33",X"3B",X"1E",X"38",X"00",X"7F",
|
||||
X"66",X"66",X"3E",X"36",X"66",X"67",X"00",X"1E",X"33",X"06",X"0C",X"18",X"33",X"1E",X"00",X"3F",
|
||||
X"2D",X"0C",X"0C",X"0C",X"0C",X"1E",X"00",X"33",X"33",X"33",X"33",X"33",X"33",X"1E",X"00",X"33",
|
||||
X"33",X"33",X"33",X"33",X"1E",X"0C",X"00",X"63",X"63",X"63",X"6B",X"7F",X"77",X"63",X"00",X"63",
|
||||
X"63",X"36",X"1C",X"1C",X"36",X"63",X"00",X"33",X"33",X"33",X"1E",X"0C",X"0C",X"1E",X"00",X"7F",
|
||||
X"63",X"31",X"18",X"4C",X"66",X"7F",X"00",X"1E",X"06",X"06",X"06",X"06",X"06",X"1E",X"00",X"03",
|
||||
X"06",X"0C",X"18",X"30",X"60",X"40",X"00",X"1E",X"18",X"18",X"18",X"18",X"18",X"1E",X"00",X"08",
|
||||
X"1C",X"36",X"63",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"7F",X"0C",
|
||||
X"0C",X"18",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"1E",X"30",X"3E",X"33",X"6E",X"00",X"07",
|
||||
X"06",X"06",X"3E",X"66",X"66",X"3B",X"00",X"00",X"00",X"1E",X"33",X"03",X"33",X"1E",X"00",X"38",
|
||||
X"30",X"30",X"3E",X"33",X"33",X"6E",X"00",X"00",X"00",X"1E",X"33",X"3F",X"03",X"1E",X"00",X"1C",
|
||||
X"36",X"06",X"0F",X"06",X"06",X"0F",X"00",X"00",X"00",X"6E",X"33",X"33",X"3E",X"30",X"1F",X"07",
|
||||
X"06",X"36",X"6E",X"66",X"66",X"67",X"00",X"0C",X"00",X"0E",X"0C",X"0C",X"0C",X"1E",X"00",X"30",
|
||||
X"00",X"30",X"30",X"30",X"33",X"33",X"1E",X"07",X"06",X"66",X"36",X"1E",X"36",X"67",X"00",X"0E",
|
||||
X"0C",X"0C",X"0C",X"0C",X"0C",X"1E",X"00",X"00",X"00",X"33",X"7F",X"7F",X"6B",X"63",X"00",X"00",
|
||||
X"00",X"1F",X"33",X"33",X"33",X"33",X"00",X"00",X"00",X"1E",X"33",X"33",X"33",X"1E",X"00",X"00",
|
||||
X"00",X"3B",X"66",X"66",X"3E",X"06",X"0F",X"00",X"00",X"6E",X"33",X"33",X"3E",X"30",X"78",X"00",
|
||||
X"00",X"3B",X"6E",X"66",X"06",X"0F",X"00",X"00",X"00",X"3E",X"03",X"1E",X"30",X"1F",X"00",X"08",
|
||||
X"0C",X"3E",X"0C",X"0C",X"2C",X"18",X"00",X"00",X"00",X"33",X"33",X"33",X"33",X"6E",X"00",X"00",
|
||||
X"00",X"33",X"33",X"33",X"1E",X"0C",X"00",X"00",X"00",X"63",X"6B",X"7F",X"7F",X"36",X"00",X"00",
|
||||
X"00",X"63",X"36",X"1C",X"36",X"63",X"00",X"00",X"00",X"33",X"33",X"33",X"3E",X"30",X"1F",X"00",
|
||||
X"00",X"3F",X"19",X"0C",X"26",X"3F",X"00",X"38",X"0C",X"0C",X"07",X"0C",X"0C",X"38",X"00",X"08",
|
||||
X"08",X"08",X"00",X"00",X"08",X"08",X"08",X"07",X"0C",X"0C",X"38",X"0C",X"0C",X"07",X"00",X"6E",
|
||||
X"3B",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"08",X"1C",X"36",X"63",X"63",X"7F",X"00",X"0C",
|
||||
X"1E",X"33",X"33",X"3F",X"33",X"33",X"00",X"7F",X"06",X"06",X"3E",X"66",X"66",X"3F",X"00",X"3F",
|
||||
X"66",X"66",X"3E",X"66",X"66",X"3F",X"00",X"7F",X"66",X"06",X"06",X"06",X"06",X"0F",X"00",X"3C",
|
||||
X"36",X"36",X"36",X"36",X"36",X"7F",X"63",X"7F",X"46",X"16",X"1E",X"16",X"46",X"7F",X"00",X"6B",
|
||||
X"6B",X"3E",X"1C",X"3E",X"69",X"6B",X"00",X"3E",X"63",X"60",X"38",X"60",X"63",X"3E",X"00",X"63",
|
||||
X"63",X"73",X"7B",X"6F",X"67",X"63",X"00",X"1C",X"63",X"73",X"7B",X"6F",X"67",X"63",X"00",X"63",
|
||||
X"33",X"1B",X"0F",X"1B",X"33",X"63",X"00",X"78",X"6C",X"66",X"66",X"66",X"66",X"63",X"00",X"63",
|
||||
X"77",X"7F",X"7F",X"6B",X"63",X"63",X"00",X"33",X"33",X"33",X"3F",X"33",X"33",X"33",X"00",X"3E",
|
||||
X"63",X"63",X"63",X"63",X"63",X"3E",X"00",X"7F",X"63",X"63",X"63",X"63",X"63",X"63",X"00",X"3F",
|
||||
X"66",X"66",X"3E",X"06",X"06",X"0F",X"00",X"3C",X"66",X"03",X"03",X"03",X"66",X"3C",X"00",X"3F",
|
||||
X"2D",X"0C",X"0C",X"0C",X"0C",X"1E",X"00",X"63",X"63",X"63",X"7E",X"60",X"20",X"1E",X"00",X"18",
|
||||
X"7E",X"DB",X"DB",X"7E",X"18",X"3C",X"00",X"63",X"36",X"1C",X"1C",X"36",X"63",X"63",X"00",X"33",
|
||||
X"33",X"33",X"33",X"33",X"33",X"7F",X"60",X"63",X"63",X"63",X"7E",X"60",X"60",X"60",X"00",X"63",
|
||||
X"6B",X"6B",X"6B",X"6B",X"6B",X"7F",X"00",X"63",X"6B",X"6B",X"6B",X"6B",X"6B",X"7F",X"60",X"07",
|
||||
X"06",X"06",X"36",X"66",X"66",X"36",X"00",X"63",X"63",X"63",X"6F",X"5B",X"5B",X"6F",X"00",X"03",
|
||||
X"03",X"03",X"3F",X"63",X"63",X"3F",X"00",X"3E",X"63",X"60",X"7C",X"60",X"63",X"3E",X"00",X"33",
|
||||
X"6B",X"6B",X"6F",X"6B",X"6B",X"33",X"00",X"7E",X"63",X"63",X"7E",X"6C",X"66",X"63",X"00",X"00",
|
||||
X"00",X"1E",X"30",X"3E",X"33",X"7E",X"00",X"00",X"00",X"3F",X"03",X"3F",X"63",X"3F",X"00",X"00",
|
||||
X"00",X"1F",X"33",X"1F",X"33",X"1F",X"00",X"00",X"00",X"3F",X"03",X"03",X"03",X"03",X"00",X"00",
|
||||
X"00",X"3C",X"36",X"36",X"36",X"7F",X"63",X"00",X"00",X"1E",X"33",X"3F",X"03",X"1E",X"00",X"00",
|
||||
X"00",X"6B",X"6B",X"3E",X"6B",X"6B",X"00",X"00",X"00",X"1E",X"33",X"18",X"33",X"1E",X"00",X"00",
|
||||
X"00",X"63",X"63",X"73",X"7F",X"66",X"00",X"00",X"18",X"63",X"63",X"73",X"7F",X"66",X"00",X"00",
|
||||
X"00",X"33",X"1B",X"0F",X"1B",X"73",X"00",X"00",X"00",X"78",X"6C",X"66",X"66",X"67",X"00",X"00",
|
||||
X"00",X"63",X"77",X"7F",X"6B",X"63",X"00",X"00",X"00",X"63",X"63",X"7F",X"63",X"63",X"00",X"00",
|
||||
X"00",X"3E",X"63",X"63",X"63",X"3E",X"00",X"00",X"00",X"7F",X"63",X"63",X"63",X"63",X"00",X"00",
|
||||
X"00",X"3F",X"63",X"63",X"3F",X"03",X"03",X"00",X"00",X"3E",X"63",X"03",X"63",X"3E",X"00",X"00",
|
||||
X"00",X"3F",X"0C",X"0C",X"0C",X"0C",X"00",X"00",X"00",X"63",X"66",X"7C",X"60",X"3E",X"00",X"00",
|
||||
X"00",X"18",X"7E",X"DB",X"7E",X"18",X"18",X"00",X"00",X"63",X"36",X"1C",X"36",X"63",X"00",X"00",
|
||||
X"00",X"33",X"33",X"33",X"33",X"7F",X"60",X"00",X"00",X"33",X"33",X"3E",X"30",X"30",X"00",X"00",
|
||||
X"00",X"6B",X"6B",X"6B",X"6B",X"7F",X"00",X"00",X"00",X"6B",X"6B",X"6B",X"6B",X"7F",X"60",X"00",
|
||||
X"00",X"07",X"06",X"3E",X"66",X"3E",X"00",X"00",X"00",X"63",X"63",X"6F",X"5B",X"6F",X"00",X"00",
|
||||
X"00",X"03",X"03",X"3F",X"63",X"3F",X"00",X"00",X"00",X"3F",X"60",X"78",X"60",X"3F",X"00",X"00",
|
||||
X"00",X"33",X"6B",X"6F",X"6B",X"33",X"00",X"00",X"00",X"7E",X"63",X"7E",X"66",X"63",X"00",X"14",
|
||||
X"7F",X"46",X"16",X"1E",X"16",X"46",X"7F",X"00",X"12",X"1E",X"33",X"3F",X"03",X"1E",X"00",X"64",
|
||||
X"C3",X"A3",X"E4",X"C3",X"6F",X"E4",X"C3",X"A3",X"F1",X"C3",X"D7",X"E7",X"C3",X"AC",X"F1",X"C3",
|
||||
X"50",X"F2",X"C3",X"FC",X"E6",X"C3",X"48",X"F2",X"C3",X"C2",X"E3",X"C3",X"F1",X"E3",X"C3",X"2D",
|
||||
X"F1",X"C3",X"AC",X"F0",X"C3",X"E2",X"EF",X"C3",X"A8",X"EF",X"C3",X"55",X"F0",X"C3",X"1C",X"E4",
|
||||
X"C3",X"A5",X"E0",X"C3",X"1C",X"FD",X"C3",X"40",X"FD",X"C3",X"2E",X"FD",X"C3",X"35",X"FD",X"C3",
|
||||
X"80",X"F8",X"C3",X"F0",X"F8",X"C3",X"AB",X"F9",X"C3",X"80",X"FA",X"C3",X"16",X"FB",X"C3",X"72",
|
||||
X"FB",X"C3",X"BE",X"FB",X"C3",X"05",X"FC",X"C3",X"39",X"FC",X"C3",X"A0",X"FC",X"C3",X"25",X"E9",
|
||||
X"C3",X"04",X"E9",X"C3",X"81",X"E3",X"C3",X"FF",X"FF",X"C3",X"B6",X"E3",X"C3",X"7E",X"F8",X"C3",
|
||||
X"7E",X"F8",X"C3",X"44",X"E4",X"C3",X"D5",X"E3",X"C3",X"C1",X"F2",X"C3",X"C7",X"F2",X"C9",X"FF",
|
||||
X"CD",X"BA",X"F8",X"D8",X"E5",X"D5",X"C5",X"7A",X"1F",X"7B",X"1F",X"1F",X"1F",X"E6",X"3F",X"C6",
|
||||
X"40",X"57",X"4B",X"58",X"79",X"E6",X"07",X"4F",X"06",X"00",X"21",X"E8",X"F8",X"09",X"46",X"EB",
|
||||
X"3A",X"DC",X"DF",X"4F",X"CD",X"C5",X"F8",X"78",X"32",X"DF",X"DF",X"22",X"DD",X"DF",X"C1",X"E1",
|
||||
X"D1",X"22",X"EF",X"DF",X"78",X"32",X"F1",X"DF",X"EB",X"C9",X"78",X"C6",X"0A",X"D8",X"3E",X"7F",
|
||||
X"93",X"3E",X"01",X"9A",X"C9",X"16",X"02",X"F3",X"3E",X"02",X"D3",X"6A",X"79",X"A2",X"78",X"CA",
|
||||
X"D6",X"F8",X"B6",X"C3",X"D8",X"F8",X"2F",X"A6",X"77",X"3E",X"03",X"D3",X"6A",X"15",X"C2",X"CC",
|
||||
X"F8",X"3A",X"FE",X"DF",X"D3",X"6A",X"FB",X"C9",X"01",X"02",X"04",X"08",X"10",X"20",X"40",X"80",
|
||||
X"CD",X"BA",X"F8",X"D8",X"E5",X"D5",X"C5",X"2A",X"EF",X"DF",X"7B",X"95",X"6F",X"7A",X"9C",X"67",
|
||||
X"DC",X"A3",X"F9",X"0E",X"02",X"DA",X"0A",X"F9",X"0E",X"00",X"3A",X"F1",X"DF",X"EB",X"90",X"6F",
|
||||
X"DC",X"A3",X"F9",X"3E",X"00",X"67",X"DA",X"1B",X"F9",X"3E",X"40",X"B1",X"4F",X"7B",X"95",X"7A",
|
||||
X"9C",X"3E",X"01",X"D2",X"29",X"F9",X"EB",X"3E",X"80",X"B1",X"32",X"E0",X"DF",X"29",X"CD",X"A3",
|
||||
X"F9",X"2B",X"22",X"E3",X"DF",X"EB",X"22",X"E5",X"DF",X"54",X"5D",X"29",X"22",X"E1",X"DF",X"3A",
|
||||
X"DC",X"DF",X"4F",X"3A",X"DF",X"DF",X"47",X"2A",X"DD",X"DF",X"7C",X"D6",X"40",X"DA",X"37",X"FA",
|
||||
X"3E",X"70",X"94",X"DA",X"37",X"FA",X"7A",X"B3",X"CA",X"A7",X"F8",X"1B",X"D5",X"E5",X"2A",X"E3",
|
||||
X"DF",X"EB",X"2A",X"E5",X"DF",X"23",X"19",X"3A",X"E0",X"DF",X"DA",X"74",X"F9",X"F6",X"81",X"EB",
|
||||
X"2A",X"E1",X"DF",X"19",X"22",X"E5",X"DF",X"E1",X"57",X"0F",X"D2",X"90",X"F9",X"0F",X"78",X"D2",
|
||||
X"8A",X"F9",X"0F",X"D2",X"8F",X"F9",X"25",X"C3",X"8F",X"F9",X"07",X"D2",X"8F",X"F9",X"24",X"47",
|
||||
X"7A",X"07",X"D2",X"9C",X"F9",X"07",X"2D",X"DA",X"9C",X"F9",X"2C",X"2C",X"CD",X"C5",X"F8",X"D1",
|
||||
X"C3",X"56",X"F9",X"7C",X"2F",X"67",X"7D",X"2F",X"6F",X"23",X"C9",X"CD",X"BA",X"F8",X"D8",X"E5",
|
||||
X"D5",X"C5",X"EB",X"22",X"E9",X"DF",X"68",X"26",X"00",X"22",X"EB",X"DF",X"3A",X"F7",X"DF",X"47",
|
||||
X"2A",X"F8",X"DF",X"EB",X"CD",X"91",X"FA",X"DA",X"37",X"FA",X"59",X"16",X"00",X"3A",X"EE",X"DF",
|
||||
X"6F",X"62",X"EB",X"A7",X"C4",X"A8",X"FA",X"22",X"D7",X"DF",X"59",X"3A",X"ED",X"DF",X"6F",X"62",
|
||||
X"EB",X"A7",X"C4",X"A8",X"FA",X"22",X"F5",X"DF",X"48",X"CD",X"C5",X"FA",X"E5",X"2A",X"F5",X"DF",
|
||||
X"CD",X"A8",X"FA",X"24",X"22",X"F3",X"DF",X"2A",X"D7",X"DF",X"EB",X"CD",X"A8",X"FA",X"22",X"D9",
|
||||
X"DF",X"EB",X"D1",X"CD",X"A8",X"FA",X"22",X"D7",X"DF",X"2A",X"F5",X"DF",X"CD",X"A8",X"FA",X"22",
|
||||
X"F5",X"DF",X"3A",X"F9",X"DF",X"4F",X"CD",X"3B",X"FA",X"CD",X"80",X"F8",X"DA",X"37",X"FA",X"0C",
|
||||
X"3E",X"48",X"A9",X"C2",X"27",X"FA",X"4F",X"CD",X"3B",X"FA",X"CD",X"F0",X"F8",X"DA",X"37",X"FA",
|
||||
X"3A",X"F8",X"DF",X"A9",X"C2",X"1F",X"FA",X"C1",X"D1",X"E1",X"C9",X"CD",X"C5",X"FA",X"22",X"E1",
|
||||
X"DF",X"EB",X"22",X"E5",X"DF",X"2A",X"D9",X"DF",X"CD",X"9D",X"FA",X"E5",X"2A",X"E5",X"DF",X"EB",
|
||||
X"2A",X"F5",X"DF",X"CD",X"9D",X"FA",X"D1",X"19",X"EB",X"2A",X"EB",X"DF",X"19",X"7C",X"C6",X"FF",
|
||||
X"D8",X"45",X"2A",X"E5",X"DF",X"EB",X"2A",X"F3",X"DF",X"CD",X"9D",X"FA",X"E5",X"2A",X"E1",X"DF",
|
||||
X"EB",X"2A",X"D7",X"DF",X"CD",X"9D",X"FA",X"D1",X"19",X"EB",X"2A",X"E9",X"DF",X"19",X"EB",X"C9",
|
||||
X"CD",X"91",X"FA",X"D8",X"22",X"ED",X"DF",X"EB",X"22",X"F8",X"DF",X"EB",X"78",X"32",X"F7",X"DF",
|
||||
X"C9",X"7A",X"C6",X"B9",X"D8",X"7B",X"C6",X"B9",X"D8",X"78",X"C6",X"B9",X"C9",X"CD",X"A8",X"FA",
|
||||
X"7C",X"26",X"00",X"0F",X"DC",X"A3",X"F9",X"C9",X"D5",X"C5",X"7C",X"AA",X"47",X"7D",X"21",X"FF",
|
||||
X"00",X"54",X"0E",X"08",X"0F",X"D2",X"B9",X"FA",X"19",X"EB",X"29",X"EB",X"0D",X"C2",X"B4",X"FA",
|
||||
X"6C",X"60",X"C1",X"D1",X"C9",X"C5",X"79",X"01",X"00",X"00",X"16",X"12",X"92",X"FA",X"DC",X"FA",
|
||||
X"0C",X"92",X"FA",X"DC",X"FA",X"04",X"92",X"FA",X"DC",X"FA",X"0D",X"92",X"82",X"07",X"6F",X"26",
|
||||
X"00",X"11",X"F0",X"FA",X"19",X"5E",X"23",X"6E",X"60",X"51",X"7C",X"AA",X"C1",X"C8",X"EB",X"C9",
|
||||
X"00",X"FF",X"16",X"FF",X"2C",X"FC",X"42",X"F7",X"58",X"F1",X"6C",X"E8",X"80",X"DE",X"93",X"D2",
|
||||
X"A5",X"C4",X"B5",X"B5",X"C4",X"A5",X"D2",X"93",X"DE",X"80",X"E8",X"6C",X"F1",X"58",X"F7",X"42",
|
||||
X"FC",X"2C",X"FF",X"16",X"FF",X"00",X"78",X"C6",X"F0",X"D8",X"C5",X"D5",X"E5",X"CD",X"61",X"FB",
|
||||
X"0E",X"20",X"F3",X"1A",X"CD",X"53",X"FB",X"47",X"3E",X"02",X"D3",X"6A",X"70",X"3A",X"FE",X"DF",
|
||||
X"D3",X"6A",X"13",X"1A",X"CD",X"53",X"FB",X"47",X"3E",X"03",X"D3",X"6A",X"70",X"3A",X"FE",X"DF",
|
||||
X"D3",X"6A",X"13",X"23",X"0D",X"C2",X"23",X"FB",X"FB",X"3A",X"FE",X"DF",X"D3",X"6A",X"AF",X"E1",
|
||||
X"D1",X"C1",X"C9",X"E5",X"C5",X"67",X"06",X"08",X"29",X"1F",X"05",X"C2",X"58",X"FB",X"C1",X"E1",
|
||||
X"C9",X"78",X"0F",X"0F",X"0F",X"47",X"E6",X"F0",X"4F",X"78",X"E6",X"03",X"47",X"21",X"00",X"3C",
|
||||
X"09",X"C9",X"78",X"C6",X"F0",X"D8",X"7A",X"C6",X"D1",X"D8",X"7B",X"C6",X"8C",X"D8",X"C5",X"D5",
|
||||
X"E5",X"CD",X"61",X"FB",X"7B",X"07",X"5F",X"3E",X"40",X"82",X"57",X"06",X"02",X"D5",X"0E",X"10",
|
||||
X"F3",X"3E",X"02",X"D3",X"6A",X"1A",X"24",X"24",X"77",X"25",X"25",X"B6",X"12",X"3E",X"03",X"D3",
|
||||
X"6A",X"1A",X"24",X"24",X"77",X"25",X"25",X"B6",X"12",X"23",X"13",X"0D",X"C2",X"91",X"FB",X"3A",
|
||||
X"FE",X"DF",X"D3",X"6A",X"FB",X"D1",X"14",X"05",X"C2",X"8D",X"FB",X"C3",X"4E",X"FB",X"78",X"C6",
|
||||
X"F0",X"D8",X"7A",X"C6",X"D1",X"D8",X"7B",X"C6",X"8C",X"D8",X"C5",X"D5",X"E5",X"7B",X"07",X"6F",
|
||||
X"3E",X"40",X"82",X"67",X"E5",X"CD",X"61",X"FB",X"11",X"00",X"02",X"19",X"EB",X"E1",X"06",X"02",
|
||||
X"E5",X"0E",X"10",X"F3",X"3E",X"02",X"D3",X"6A",X"1A",X"77",X"3E",X"03",X"D3",X"6A",X"1A",X"77",
|
||||
X"13",X"23",X"0D",X"C2",X"E4",X"FB",X"3A",X"FE",X"DF",X"D3",X"6A",X"FB",X"E1",X"24",X"05",X"C2",
|
||||
X"E0",X"FB",X"C3",X"4E",X"FB",X"CD",X"BA",X"F8",X"D8",X"C5",X"D5",X"E5",X"CD",X"34",X"FC",X"CD",
|
||||
X"BA",X"F8",X"DA",X"30",X"FC",X"78",X"91",X"D4",X"34",X"FC",X"05",X"04",X"CD",X"84",X"F8",X"CD",
|
||||
X"34",X"FC",X"C5",X"41",X"CD",X"F0",X"F8",X"C1",X"CD",X"34",X"FC",X"4F",X"B8",X"C2",X"1B",X"FC",
|
||||
X"E1",X"D1",X"C1",X"C9",X"EB",X"78",X"41",X"4F",X"C9",X"CD",X"8A",X"FC",X"D8",X"C5",X"E5",X"E5",
|
||||
X"7C",X"C6",X"40",X"67",X"47",X"4D",X"CD",X"7A",X"FC",X"DA",X"6C",X"FC",X"F3",X"3E",X"02",X"D3",
|
||||
X"6A",X"0A",X"77",X"2B",X"77",X"3E",X"03",X"D3",X"6A",X"0A",X"77",X"23",X"77",X"7C",X"25",X"05",
|
||||
X"D6",X"40",X"92",X"C2",X"4D",X"FC",X"3A",X"FE",X"DF",X"D3",X"6A",X"FB",X"E1",X"7D",X"2D",X"93",
|
||||
X"C2",X"3F",X"FC",X"E1",X"CD",X"7A",X"FC",X"A7",X"C1",X"C9",X"7D",X"2E",X"F5",X"93",X"07",X"D8",
|
||||
X"3C",X"83",X"D8",X"C6",X"0A",X"D8",X"D6",X"0A",X"6F",X"C9",X"7A",X"C6",X"D1",X"D8",X"7B",X"C6",
|
||||
X"0B",X"D8",X"7C",X"C6",X"D0",X"D8",X"7D",X"C6",X"0A",X"D8",X"7C",X"92",X"D8",X"7D",X"93",X"C9",
|
||||
X"CD",X"8A",X"FC",X"D8",X"C5",X"E5",X"E5",X"7C",X"C6",X"40",X"47",X"4D",X"CD",X"DD",X"FC",X"DA",
|
||||
X"CF",X"FC",X"7C",X"C6",X"40",X"67",X"D5",X"3E",X"02",X"32",X"D6",X"DF",X"CD",X"EA",X"FC",X"3E",
|
||||
X"03",X"32",X"D6",X"DF",X"CD",X"EA",X"FC",X"D1",X"7D",X"2D",X"0D",X"93",X"C2",X"B6",X"FC",X"E1",
|
||||
X"7C",X"25",X"92",X"C2",X"A6",X"FC",X"E1",X"CD",X"DD",X"FC",X"A7",X"C1",X"C9",X"7C",X"92",X"07",
|
||||
X"3C",X"82",X"67",X"3E",X"2F",X"94",X"D0",X"26",X"2F",X"C9",X"F3",X"E5",X"3A",X"D6",X"DF",X"D3",
|
||||
X"6A",X"0A",X"21",X"00",X"00",X"16",X"08",X"29",X"29",X"07",X"D2",X"00",X"FD",X"2C",X"2C",X"2C",
|
||||
X"15",X"C2",X"F7",X"FC",X"55",X"5C",X"3A",X"FE",X"DF",X"D3",X"6A",X"E1",X"3A",X"D6",X"DF",X"D3",
|
||||
X"6A",X"73",X"25",X"72",X"3A",X"FE",X"DF",X"D3",X"6A",X"24",X"FB",X"C9",X"F5",X"E6",X"04",X"CA",
|
||||
X"29",X"FD",X"F1",X"3A",X"20",X"DF",X"C3",X"2A",X"FD",X"F1",X"32",X"DC",X"DF",X"C9",X"E5",X"21",
|
||||
X"39",X"FE",X"C3",X"39",X"FD",X"E5",X"21",X"32",X"FE",X"C5",X"01",X"00",X"20",X"C3",X"42",X"FD",
|
||||
X"E5",X"C5",X"3E",X"88",X"32",X"FF",X"DF",X"32",X"FA",X"DF",X"79",X"32",X"FD",X"DF",X"3E",X"25",
|
||||
X"D3",X"79",X"3E",X"A6",X"D3",X"63",X"78",X"D3",X"62",X"3E",X"10",X"D3",X"63",X"3E",X"76",X"D3",
|
||||
X"63",X"3E",X"C3",X"32",X"04",X"DF",X"22",X"FB",X"DF",X"21",X"71",X"FD",X"22",X"05",X"DF",X"C1",
|
||||
X"E1",X"F5",X"C5",X"D5",X"E5",X"3A",X"FA",X"DF",X"A7",X"C2",X"94",X"FD",X"3C",X"32",X"FA",X"DF",
|
||||
X"D3",X"60",X"3E",X"25",X"D3",X"79",X"3E",X"FD",X"D3",X"75",X"3E",X"61",X"D3",X"74",X"FB",X"E1",
|
||||
X"D1",X"C1",X"F1",X"C9",X"AF",X"32",X"FA",X"DF",X"2A",X"FB",X"DF",X"7E",X"A7",X"C2",X"C6",X"FD",
|
||||
X"3E",X"FF",X"D3",X"75",X"AF",X"32",X"FF",X"DF",X"3E",X"76",X"D3",X"63",X"3E",X"96",X"D3",X"63",
|
||||
X"3E",X"0D",X"D3",X"62",X"3E",X"FF",X"D3",X"75",X"3E",X"20",X"D3",X"74",X"21",X"00",X"E0",X"22",
|
||||
X"05",X"DF",X"FB",X"C3",X"8F",X"FD",X"F2",X"D0",X"FD",X"32",X"FF",X"DF",X"23",X"C3",X"9B",X"FD",
|
||||
X"E6",X"70",X"0F",X"0F",X"0F",X"0F",X"4F",X"3A",X"FD",X"DF",X"81",X"E6",X"07",X"4F",X"7E",X"23",
|
||||
X"22",X"FB",X"DF",X"E6",X"0F",X"FE",X"0D",X"F2",X"0E",X"FE",X"3D",X"07",X"5F",X"16",X"00",X"21",
|
||||
X"1A",X"FE",X"19",X"56",X"23",X"5E",X"0D",X"CA",X"04",X"FE",X"A7",X"7A",X"1F",X"57",X"7B",X"1F",
|
||||
X"5F",X"C3",X"F6",X"FD",X"7B",X"D3",X"61",X"7A",X"D3",X"61",X"3E",X"05",X"D3",X"79",X"3A",X"FF",
|
||||
X"DF",X"E6",X"7F",X"07",X"3D",X"D3",X"60",X"C3",X"86",X"FD",X"EE",X"EA",X"E1",X"78",X"D4",X"E0",
|
||||
X"C8",X"D6",X"BD",X"A0",X"B2",X"FB",X"A8",X"EB",X"9F",X"70",X"96",X"88",X"8E",X"0C",X"86",X"01",
|
||||
X"7D",X"E1",X"90",X"5B",X"90",X"51",X"A0",X"65",X"00",X"88",X"5B",X"00",X"3E",X"AF",X"D3",X"1A",
|
||||
X"3E",X"FF",X"D3",X"1B",X"07",X"D3",X"1B",X"07",X"D3",X"1B",X"07",X"D3",X"1B",X"07",X"D3",X"1B",
|
||||
X"07",X"D3",X"1B",X"07",X"D3",X"1B",X"07",X"D3",X"1B",X"C9",X"3E",X"FF",X"D3",X"1B",X"D3",X"1B",
|
||||
X"D3",X"1B",X"D3",X"1B",X"D3",X"1B",X"D3",X"1B",X"D3",X"1B",X"D3",X"1B",X"DB",X"1B",X"C9",X"21",
|
||||
X"00",X"00",X"11",X"00",X"00",X"4F",X"CD",X"40",X"FE",X"79",X"CD",X"42",X"FE",X"7A",X"CD",X"42",
|
||||
X"FE",X"7B",X"CD",X"42",X"FE",X"7C",X"CD",X"42",X"FE",X"7D",X"CD",X"42",X"FE",X"3E",X"95",X"CD",
|
||||
X"42",X"FE",X"11",X"80",X"80",X"21",X"20",X"4E",X"CD",X"5A",X"FE",X"4F",X"92",X"BB",X"79",X"D0",
|
||||
X"2B",X"7C",X"B5",X"C2",X"98",X"FE",X"D6",X"01",X"C9",X"C5",X"D5",X"E5",X"11",X"FF",X"00",X"CD",
|
||||
X"95",X"FE",X"E1",X"D1",X"C1",X"C9",X"CD",X"3D",X"FE",X"06",X"10",X"CD",X"40",X"FE",X"05",X"C2",
|
||||
X"BB",X"FE",X"CD",X"3C",X"FE",X"3E",X"40",X"CD",X"6F",X"FE",X"FE",X"01",X"C0",X"3E",X"77",X"CD",
|
||||
X"6F",X"FE",X"E6",X"FE",X"C0",X"3E",X"69",X"CD",X"6F",X"FE",X"FE",X"01",X"CA",X"CD",X"FE",X"B7",
|
||||
X"C9",X"CD",X"A9",X"FE",X"D8",X"E5",X"EB",X"29",X"5C",X"65",X"AF",X"57",X"6F",X"3E",X"51",X"CD",
|
||||
X"75",X"FE",X"E1",X"D8",X"06",X"00",X"E5",X"11",X"01",X"FF",X"CD",X"95",X"FE",X"E1",X"FE",X"FE",
|
||||
X"C0",X"CD",X"5A",X"FE",X"77",X"23",X"CD",X"5A",X"FE",X"77",X"23",X"05",X"C2",X"01",X"FF",X"C9",
|
||||
X"3E",X"02",X"D3",X"6A",X"3A",X"80",X"28",X"E6",X"04",X"C0",X"AF",X"D3",X"6A",X"CD",X"24",X"FF",
|
||||
X"DA",X"3D",X"FE",X"E9",X"CD",X"B6",X"FE",X"37",X"C0",X"11",X"00",X"00",X"21",X"00",X"C0",X"CD",
|
||||
X"E1",X"FE",X"D8",X"CD",X"42",X"FF",X"D0",X"2A",X"C6",X"C1",X"EB",X"21",X"00",X"C0",X"CD",X"E1",
|
||||
X"FE",X"D8",X"CD",X"BA",X"FF",X"37",X"C0",X"2A",X"16",X"C0",X"EB",X"2A",X"0E",X"C0",X"3A",X"10",
|
||||
X"C0",X"19",X"3D",X"C2",X"51",X"FF",X"EB",X"2A",X"1C",X"C0",X"19",X"22",X"F0",X"C1",X"EB",X"2A",
|
||||
X"11",X"C0",X"4D",X"44",X"29",X"29",X"29",X"29",X"E5",X"79",X"E6",X"0F",X"C5",X"CC",X"9E",X"FF",
|
||||
X"D5",X"E5",X"06",X"0B",X"11",X"CB",X"FF",X"1A",X"BE",X"C2",X"AA",X"FF",X"13",X"23",X"05",X"C2",
|
||||
X"77",X"FF",X"C1",X"C1",X"C1",X"11",X"0F",X"00",X"19",X"5E",X"23",X"56",X"1B",X"1B",X"2A",X"F0",
|
||||
X"C1",X"3A",X"0D",X"C0",X"19",X"3D",X"C2",X"94",X"FF",X"D1",X"5A",X"57",X"19",X"EB",X"D5",X"21",
|
||||
X"00",X"C2",X"E5",X"CD",X"E1",X"FE",X"E1",X"D1",X"13",X"C9",X"E1",X"11",X"20",X"00",X"19",X"D1",
|
||||
X"C1",X"0B",X"78",X"B1",X"C2",X"69",X"FF",X"C1",X"37",X"C9",X"21",X"36",X"C0",X"7E",X"23",X"FE",
|
||||
X"46",X"C0",X"7E",X"23",X"FE",X"41",X"C0",X"7E",X"FE",X"54",X"C9",X"42",X"4F",X"4F",X"54",X"20",
|
||||
X"20",X"20",X"20",X"52",X"4F",X"4D",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
|
||||
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"1B",X"59",X"2C",X"2C",X"2D",X"DE",X"E8",X"D8",
|
||||
X"D1",X"DA",X"D0",X"20",X"D7",X"D0",X"D3",X"E0",X"E3",X"D7",X"DA",X"D8",X"2D",X"00",X"FF",X"F6");
|
||||
begin
|
||||
process(clk)
|
||||
begin
|
||||
if rising_edge(clk) then
|
||||
data <= rom_data(to_integer(unsigned(addr)));
|
||||
end if;
|
||||
end process;
|
||||
end architecture;
|
||||
@@ -1,4 +0,0 @@
|
||||
set_global_assignment -name IP_TOOL_NAME "ALTPLL"
|
||||
set_global_assignment -name IP_TOOL_VERSION "13.1"
|
||||
set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "clk20mhz.v"]
|
||||
set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "clk20mhz.ppf"]
|
||||
@@ -1,48 +0,0 @@
|
||||
-------------------------------------------------------------------------------
|
||||
--
|
||||
-- Delta-Sigma DAC
|
||||
--
|
||||
-- Refer to Xilinx Application Note XAPP154.
|
||||
--
|
||||
-- This DAC requires an external RC low-pass filter:
|
||||
--
|
||||
-- dac_o 0---XXXXX---+---0 analog audio
|
||||
-- 3k3 |
|
||||
-- === 4n7
|
||||
-- |
|
||||
-- GND
|
||||
--
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
library ieee;
|
||||
use ieee.std_logic_1164.all;
|
||||
use ieee.numeric_std.all;
|
||||
|
||||
entity dac is
|
||||
generic (
|
||||
C_bits : integer := 16
|
||||
);
|
||||
port (
|
||||
clk_i : in std_logic;
|
||||
res_n_i : in std_logic;
|
||||
dac_i : in std_logic_vector(C_bits-1 downto 0);
|
||||
dac_o : out std_logic
|
||||
);
|
||||
end dac;
|
||||
|
||||
architecture rtl of dac is
|
||||
signal sig_in: unsigned(C_bits downto 0);
|
||||
begin
|
||||
seq: process(clk_i, res_n_i)
|
||||
begin
|
||||
if res_n_i = '0' then
|
||||
sig_in <= to_unsigned(2**C_bits, sig_in'length);
|
||||
dac_o <= '0';
|
||||
elsif rising_edge(clk_i) then
|
||||
-- not dac_i(C_bits-1) effectively adds 0x8..0 to dac_i
|
||||
--sig_in <= sig_in + unsigned(sig_in(C_bits) & (not dac_i(C_bits-1)) & dac_i(C_bits-2 downto 0));
|
||||
sig_in <= sig_in + unsigned(sig_in(C_bits) & dac_i);
|
||||
dac_o <= sig_in(C_bits);
|
||||
end if;
|
||||
end process seq;
|
||||
end rtl;
|
||||
@@ -1,511 +0,0 @@
|
||||
//
|
||||
// mist_io.v
|
||||
//
|
||||
// mist_io for the MiST board
|
||||
// http://code.google.com/p/mist-board/
|
||||
//
|
||||
// Copyright (c) 2014 Till Harbaum <till@harbaum.org>
|
||||
//
|
||||
// This source file is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published
|
||||
// by the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This source file is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
|
||||
//
|
||||
// Use buffer to access SD card. It's time-critical part.
|
||||
// Made module synchroneous with 2 clock domains: clk_sys and SPI_SCK
|
||||
// (Sorgelig)
|
||||
//
|
||||
// for synchronous projects default value for PS2DIV is fine for any frequency of system clock.
|
||||
// clk_ps2 = clk_sys/(PS2DIV*2)
|
||||
//
|
||||
|
||||
module mist_io #(parameter STRLEN=0, parameter PS2DIV=100)
|
||||
(
|
||||
|
||||
// parameter STRLEN and the actual length of conf_str have to match
|
||||
input [(8*STRLEN)-1:0] conf_str,
|
||||
|
||||
// Global clock. It should be around 100MHz (higher is better).
|
||||
input clk_sys,
|
||||
|
||||
// Global SPI clock from ARM. 24MHz
|
||||
input SPI_SCK,
|
||||
|
||||
input CONF_DATA0,
|
||||
input SPI_SS2,
|
||||
output SPI_DO,
|
||||
input SPI_DI,
|
||||
|
||||
output reg [7:0] joystick_0,
|
||||
output reg [7:0] joystick_1,
|
||||
output reg [15:0] joystick_analog_0,
|
||||
output reg [15:0] joystick_analog_1,
|
||||
output [1:0] buttons,
|
||||
output [1:0] switches,
|
||||
output scandoubler_disable,
|
||||
output ypbpr,
|
||||
|
||||
output reg [31:0] status,
|
||||
|
||||
// SD config
|
||||
input sd_conf,
|
||||
input sd_sdhc,
|
||||
output img_mounted, // signaling that new image has been mounted
|
||||
output reg [31:0] img_size, // size of image in bytes
|
||||
|
||||
// SD block level access
|
||||
input [31:0] sd_lba,
|
||||
input sd_rd,
|
||||
input sd_wr,
|
||||
output reg sd_ack,
|
||||
output reg sd_ack_conf,
|
||||
|
||||
// SD byte level access. Signals for 2-PORT altsyncram.
|
||||
output reg [8:0] sd_buff_addr,
|
||||
output reg [7:0] sd_buff_dout,
|
||||
input [7:0] sd_buff_din,
|
||||
output reg sd_buff_wr,
|
||||
output reg sd_dout_strobe,
|
||||
output reg sd_din_strobe,
|
||||
|
||||
|
||||
// ps2 keyboard emulation
|
||||
output ps2_kbd_clk,
|
||||
output reg ps2_kbd_data,
|
||||
output ps2_mouse_clk,
|
||||
output reg ps2_mouse_data,
|
||||
input ps2_caps_led,
|
||||
|
||||
// ARM -> FPGA download
|
||||
output reg ioctl_download = 0, // signal indicating an active download
|
||||
output reg [7:0] ioctl_index, // menu index used to upload the file
|
||||
output ioctl_wr,
|
||||
output reg [24:0] ioctl_addr,
|
||||
output reg [7:0] ioctl_dout
|
||||
);
|
||||
|
||||
reg [7:0] b_data;
|
||||
reg [6:0] sbuf;
|
||||
reg [7:0] cmd;
|
||||
reg [2:0] bit_cnt; // counts bits 0-7 0-7 ...
|
||||
reg [9:0] byte_cnt; // counts bytes
|
||||
reg [7:0] but_sw;
|
||||
reg [2:0] stick_idx;
|
||||
|
||||
reg mount_strobe = 0;
|
||||
assign img_mounted = mount_strobe;
|
||||
|
||||
assign buttons = but_sw[1:0];
|
||||
assign switches = but_sw[3:2];
|
||||
assign scandoubler_disable = but_sw[4];
|
||||
assign ypbpr = but_sw[5];
|
||||
|
||||
wire [7:0] spi_dout = { sbuf, SPI_DI};
|
||||
|
||||
// this variant of user_io is for 8 bit cores (type == a4) only
|
||||
wire [7:0] core_type = 8'ha4;
|
||||
|
||||
// command byte read by the io controller
|
||||
wire [7:0] sd_cmd = { 4'h5, sd_conf, sd_sdhc, sd_wr, sd_rd };
|
||||
|
||||
reg spi_do;
|
||||
assign SPI_DO = CONF_DATA0 ? 1'bZ : spi_do;
|
||||
|
||||
wire [7:0] kbd_led = { 2'b01, 4'b0000, ps2_caps_led, 1'b1};
|
||||
|
||||
// drive MISO only when transmitting core id
|
||||
always@(negedge SPI_SCK) begin
|
||||
if(!CONF_DATA0) begin
|
||||
// first byte returned is always core type, further bytes are
|
||||
// command dependent
|
||||
if(byte_cnt == 0) begin
|
||||
spi_do <= core_type[~bit_cnt];
|
||||
|
||||
end else begin
|
||||
case(cmd)
|
||||
// reading config string
|
||||
8'h14: begin
|
||||
// returning a byte from string
|
||||
if(byte_cnt < STRLEN + 1) spi_do <= conf_str[{STRLEN - byte_cnt,~bit_cnt}];
|
||||
else spi_do <= 0;
|
||||
end
|
||||
|
||||
// reading sd card status
|
||||
8'h16: begin
|
||||
if(byte_cnt == 1) spi_do <= sd_cmd[~bit_cnt];
|
||||
else if((byte_cnt >= 2) && (byte_cnt < 6)) spi_do <= sd_lba[{5-byte_cnt, ~bit_cnt}];
|
||||
else spi_do <= 0;
|
||||
end
|
||||
|
||||
// reading sd card write data
|
||||
8'h18:
|
||||
spi_do <= b_data[~bit_cnt];
|
||||
|
||||
// reading keyboard LED status
|
||||
8'h1f:
|
||||
spi_do <= kbd_led[~bit_cnt];
|
||||
|
||||
default:
|
||||
spi_do <= 0;
|
||||
endcase
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
reg b_wr2,b_wr3;
|
||||
always @(negedge clk_sys) begin
|
||||
b_wr3 <= b_wr2;
|
||||
sd_buff_wr <= b_wr3;
|
||||
end
|
||||
|
||||
// SPI receiver
|
||||
always@(posedge SPI_SCK or posedge CONF_DATA0) begin
|
||||
|
||||
if(CONF_DATA0) begin
|
||||
b_wr2 <= 0;
|
||||
bit_cnt <= 0;
|
||||
byte_cnt <= 0;
|
||||
sd_ack <= 0;
|
||||
sd_ack_conf <= 0;
|
||||
sd_dout_strobe <= 0;
|
||||
sd_din_strobe <= 0;
|
||||
|
||||
end else begin
|
||||
b_wr2 <= 0;
|
||||
sd_dout_strobe <= 0;
|
||||
sd_din_strobe <= 0;
|
||||
sbuf <= spi_dout[6:0];
|
||||
bit_cnt <= bit_cnt + 1'd1;
|
||||
if(bit_cnt == 5) begin
|
||||
if (byte_cnt == 0) sd_buff_addr <= 0;
|
||||
if((byte_cnt != 0) & (sd_buff_addr != 511)) sd_buff_addr <= sd_buff_addr + 1'b1;
|
||||
if((byte_cnt == 1) & ((cmd == 8'h17) | (cmd == 8'h19))) sd_buff_addr <= 0;
|
||||
end
|
||||
|
||||
// finished reading command byte
|
||||
if(bit_cnt == 7) begin
|
||||
if(~&byte_cnt) byte_cnt <= byte_cnt + 8'd1;
|
||||
if(byte_cnt == 0) begin
|
||||
cmd <= spi_dout;
|
||||
|
||||
if(spi_dout == 8'h19) begin
|
||||
sd_ack_conf <= 1;
|
||||
sd_buff_addr <= 0;
|
||||
end
|
||||
if((spi_dout == 8'h17) || (spi_dout == 8'h18)) begin
|
||||
sd_ack <= 1;
|
||||
sd_buff_addr <= 0;
|
||||
end
|
||||
if(spi_dout == 8'h18) begin
|
||||
b_data <= sd_buff_din;
|
||||
sd_din_strobe <= 1'b1;
|
||||
mount_strobe <= 0;
|
||||
end
|
||||
|
||||
end else begin
|
||||
|
||||
case(cmd)
|
||||
// buttons and switches
|
||||
8'h01: but_sw <= spi_dout;
|
||||
8'h02: joystick_0 <= spi_dout;
|
||||
8'h03: joystick_1 <= spi_dout;
|
||||
|
||||
// store incoming ps2 mouse bytes
|
||||
8'h04: begin
|
||||
ps2_mouse_fifo[ps2_mouse_wptr] <= spi_dout;
|
||||
ps2_mouse_wptr <= ps2_mouse_wptr + 1'd1;
|
||||
end
|
||||
|
||||
// store incoming ps2 keyboard bytes
|
||||
8'h05: begin
|
||||
ps2_kbd_fifo[ps2_kbd_wptr] <= spi_dout;
|
||||
ps2_kbd_wptr <= ps2_kbd_wptr + 1'd1;
|
||||
end
|
||||
|
||||
8'h15: status[7:0] <= spi_dout;
|
||||
|
||||
// send SD config IO -> FPGA
|
||||
// flag that download begins
|
||||
// sd card knows data is config if sd_dout_strobe is asserted
|
||||
// with sd_ack still being inactive (low)
|
||||
8'h19: begin
|
||||
// flag that download begins
|
||||
sd_buff_dout <= spi_dout;
|
||||
// sd card knows data is config if sd_dout_strobe is asserted
|
||||
// with sd_ack still being inactive (low)
|
||||
sd_dout_strobe <= 1;
|
||||
end
|
||||
|
||||
// send sector IO -> FPGA
|
||||
// flag that download begins
|
||||
8'h17: begin
|
||||
sd_buff_dout <= spi_dout;
|
||||
sd_dout_strobe <= 1;
|
||||
b_wr2 <= 1;
|
||||
end
|
||||
|
||||
8'h18: begin
|
||||
b_data <= sd_buff_din;
|
||||
sd_din_strobe <= 1;
|
||||
end
|
||||
|
||||
// joystick analog
|
||||
8'h1a: begin
|
||||
// first byte is joystick index
|
||||
if(byte_cnt == 1) stick_idx <= spi_dout[2:0];
|
||||
else if(byte_cnt == 2) begin
|
||||
// second byte is x axis
|
||||
if(stick_idx == 0) joystick_analog_0[15:8] <= spi_dout;
|
||||
else if(stick_idx == 1) joystick_analog_1[15:8] <= spi_dout;
|
||||
end else if(byte_cnt == 3) begin
|
||||
// third byte is y axis
|
||||
if(stick_idx == 0) joystick_analog_0[7:0] <= spi_dout;
|
||||
else if(stick_idx == 1) joystick_analog_1[7:0] <= spi_dout;
|
||||
end
|
||||
end
|
||||
|
||||
// notify image selection
|
||||
8'h1c: mount_strobe <= 1;
|
||||
|
||||
// send image info
|
||||
8'h1d: if(byte_cnt<5) img_size[(byte_cnt-1)<<3 +:8] <= spi_dout;
|
||||
|
||||
// status, 32bit version
|
||||
8'h1e: if(byte_cnt<5) status[(byte_cnt-1)<<3 +:8] <= spi_dout;
|
||||
default: ;
|
||||
endcase
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
/////////////////////////////// PS2 ///////////////////////////////
|
||||
// 8 byte fifos to store ps2 bytes
|
||||
localparam PS2_FIFO_BITS = 3;
|
||||
|
||||
reg clk_ps2;
|
||||
always @(negedge clk_sys) begin
|
||||
integer cnt;
|
||||
cnt <= cnt + 1'd1;
|
||||
if(cnt == PS2DIV) begin
|
||||
clk_ps2 <= ~clk_ps2;
|
||||
cnt <= 0;
|
||||
end
|
||||
end
|
||||
|
||||
// keyboard
|
||||
reg [7:0] ps2_kbd_fifo[1<<PS2_FIFO_BITS];
|
||||
reg [PS2_FIFO_BITS-1:0] ps2_kbd_wptr;
|
||||
reg [PS2_FIFO_BITS-1:0] ps2_kbd_rptr;
|
||||
|
||||
// ps2 transmitter state machine
|
||||
reg [3:0] ps2_kbd_tx_state;
|
||||
reg [7:0] ps2_kbd_tx_byte;
|
||||
reg ps2_kbd_parity;
|
||||
|
||||
assign ps2_kbd_clk = clk_ps2 || (ps2_kbd_tx_state == 0);
|
||||
|
||||
// ps2 transmitter
|
||||
// Takes a byte from the FIFO and sends it in a ps2 compliant serial format.
|
||||
reg ps2_kbd_r_inc;
|
||||
always@(posedge clk_sys) begin
|
||||
reg old_clk;
|
||||
old_clk <= clk_ps2;
|
||||
if(~old_clk & clk_ps2) begin
|
||||
ps2_kbd_r_inc <= 0;
|
||||
|
||||
if(ps2_kbd_r_inc) ps2_kbd_rptr <= ps2_kbd_rptr + 1'd1;
|
||||
|
||||
// transmitter is idle?
|
||||
if(ps2_kbd_tx_state == 0) begin
|
||||
// data in fifo present?
|
||||
if(ps2_kbd_wptr != ps2_kbd_rptr) begin
|
||||
// load tx register from fifo
|
||||
ps2_kbd_tx_byte <= ps2_kbd_fifo[ps2_kbd_rptr];
|
||||
ps2_kbd_r_inc <= 1;
|
||||
|
||||
// reset parity
|
||||
ps2_kbd_parity <= 1;
|
||||
|
||||
// start transmitter
|
||||
ps2_kbd_tx_state <= 1;
|
||||
|
||||
// put start bit on data line
|
||||
ps2_kbd_data <= 0; // start bit is 0
|
||||
end
|
||||
end else begin
|
||||
|
||||
// transmission of 8 data bits
|
||||
if((ps2_kbd_tx_state >= 1)&&(ps2_kbd_tx_state < 9)) begin
|
||||
ps2_kbd_data <= ps2_kbd_tx_byte[0]; // data bits
|
||||
ps2_kbd_tx_byte[6:0] <= ps2_kbd_tx_byte[7:1]; // shift down
|
||||
if(ps2_kbd_tx_byte[0])
|
||||
ps2_kbd_parity <= !ps2_kbd_parity;
|
||||
end
|
||||
|
||||
// transmission of parity
|
||||
if(ps2_kbd_tx_state == 9) ps2_kbd_data <= ps2_kbd_parity;
|
||||
|
||||
// transmission of stop bit
|
||||
if(ps2_kbd_tx_state == 10) ps2_kbd_data <= 1; // stop bit is 1
|
||||
|
||||
// advance state machine
|
||||
if(ps2_kbd_tx_state < 11) ps2_kbd_tx_state <= ps2_kbd_tx_state + 1'd1;
|
||||
else ps2_kbd_tx_state <= 0;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
// mouse
|
||||
reg [7:0] ps2_mouse_fifo[1<<PS2_FIFO_BITS];
|
||||
reg [PS2_FIFO_BITS-1:0] ps2_mouse_wptr;
|
||||
reg [PS2_FIFO_BITS-1:0] ps2_mouse_rptr;
|
||||
|
||||
// ps2 transmitter state machine
|
||||
reg [3:0] ps2_mouse_tx_state;
|
||||
reg [7:0] ps2_mouse_tx_byte;
|
||||
reg ps2_mouse_parity;
|
||||
|
||||
assign ps2_mouse_clk = clk_ps2 || (ps2_mouse_tx_state == 0);
|
||||
|
||||
// ps2 transmitter
|
||||
// Takes a byte from the FIFO and sends it in a ps2 compliant serial format.
|
||||
reg ps2_mouse_r_inc;
|
||||
always@(posedge clk_sys) begin
|
||||
reg old_clk;
|
||||
old_clk <= clk_ps2;
|
||||
if(~old_clk & clk_ps2) begin
|
||||
ps2_mouse_r_inc <= 0;
|
||||
|
||||
if(ps2_mouse_r_inc) ps2_mouse_rptr <= ps2_mouse_rptr + 1'd1;
|
||||
|
||||
// transmitter is idle?
|
||||
if(ps2_mouse_tx_state == 0) begin
|
||||
// data in fifo present?
|
||||
if(ps2_mouse_wptr != ps2_mouse_rptr) begin
|
||||
// load tx register from fifo
|
||||
ps2_mouse_tx_byte <= ps2_mouse_fifo[ps2_mouse_rptr];
|
||||
ps2_mouse_r_inc <= 1;
|
||||
|
||||
// reset parity
|
||||
ps2_mouse_parity <= 1;
|
||||
|
||||
// start transmitter
|
||||
ps2_mouse_tx_state <= 1;
|
||||
|
||||
// put start bit on data line
|
||||
ps2_mouse_data <= 0; // start bit is 0
|
||||
end
|
||||
end else begin
|
||||
|
||||
// transmission of 8 data bits
|
||||
if((ps2_mouse_tx_state >= 1)&&(ps2_mouse_tx_state < 9)) begin
|
||||
ps2_mouse_data <= ps2_mouse_tx_byte[0]; // data bits
|
||||
ps2_mouse_tx_byte[6:0] <= ps2_mouse_tx_byte[7:1]; // shift down
|
||||
if(ps2_mouse_tx_byte[0])
|
||||
ps2_mouse_parity <= !ps2_mouse_parity;
|
||||
end
|
||||
|
||||
// transmission of parity
|
||||
if(ps2_mouse_tx_state == 9) ps2_mouse_data <= ps2_mouse_parity;
|
||||
|
||||
// transmission of stop bit
|
||||
if(ps2_mouse_tx_state == 10) ps2_mouse_data <= 1; // stop bit is 1
|
||||
|
||||
// advance state machine
|
||||
if(ps2_mouse_tx_state < 11) ps2_mouse_tx_state <= ps2_mouse_tx_state + 1'd1;
|
||||
else ps2_mouse_tx_state <= 0;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
/////////////////////////////// DOWNLOADING ///////////////////////////////
|
||||
|
||||
reg [7:0] data_w;
|
||||
reg [24:0] addr_w;
|
||||
reg rclk = 0;
|
||||
|
||||
localparam UIO_FILE_TX = 8'h53;
|
||||
localparam UIO_FILE_TX_DAT = 8'h54;
|
||||
localparam UIO_FILE_INDEX = 8'h55;
|
||||
|
||||
// data_io has its own SPI interface to the io controller
|
||||
always@(posedge SPI_SCK, posedge SPI_SS2) begin
|
||||
reg [6:0] sbuf;
|
||||
reg [7:0] cmd;
|
||||
reg [4:0] cnt;
|
||||
reg [24:0] addr;
|
||||
|
||||
if(SPI_SS2) cnt <= 0;
|
||||
else begin
|
||||
rclk <= 0;
|
||||
|
||||
// don't shift in last bit. It is evaluated directly
|
||||
// when writing to ram
|
||||
if(cnt != 15) sbuf <= { sbuf[5:0], SPI_DI};
|
||||
|
||||
// increase target address after write
|
||||
if(rclk) addr <= addr + 1'd1;
|
||||
|
||||
// count 0-7 8-15 8-15 ...
|
||||
if(cnt < 15) cnt <= cnt + 1'd1;
|
||||
else cnt <= 8;
|
||||
|
||||
// finished command byte
|
||||
if(cnt == 7) cmd <= {sbuf, SPI_DI};
|
||||
|
||||
// prepare/end transmission
|
||||
if((cmd == UIO_FILE_TX) && (cnt == 15)) begin
|
||||
// prepare
|
||||
if(SPI_DI) begin
|
||||
addr <= 0;
|
||||
ioctl_download <= 1;
|
||||
end else begin
|
||||
addr_w <= addr;
|
||||
ioctl_download <= 0;
|
||||
end
|
||||
end
|
||||
|
||||
// command 0x54: UIO_FILE_TX
|
||||
if((cmd == UIO_FILE_TX_DAT) && (cnt == 15)) begin
|
||||
addr_w <= addr;
|
||||
data_w <= {sbuf, SPI_DI};
|
||||
rclk <= 1;
|
||||
end
|
||||
|
||||
// expose file (menu) index
|
||||
if((cmd == UIO_FILE_INDEX) && (cnt == 15)) ioctl_index <= {sbuf, SPI_DI};
|
||||
end
|
||||
end
|
||||
|
||||
assign ioctl_wr = |ioctl_wrd;
|
||||
reg [1:0] ioctl_wrd;
|
||||
|
||||
always@(negedge clk_sys) begin
|
||||
reg rclkD, rclkD2;
|
||||
|
||||
rclkD <= rclk;
|
||||
rclkD2 <= rclkD;
|
||||
ioctl_wrd<= {ioctl_wrd[0],1'b0};
|
||||
|
||||
if(rclkD & ~rclkD2) begin
|
||||
ioctl_dout <= data_w;
|
||||
ioctl_addr <= addr_w;
|
||||
ioctl_wrd <= 2'b11;
|
||||
end
|
||||
end
|
||||
|
||||
endmodule
|
||||
@@ -1,179 +0,0 @@
|
||||
// A simple OSD implementation. Can be hooked up between a cores
|
||||
// VGA output and the physical VGA pins
|
||||
|
||||
module osd (
|
||||
// OSDs pixel clock, should be synchronous to cores pixel clock to
|
||||
// avoid jitter.
|
||||
input clk_sys,
|
||||
|
||||
// SPI interface
|
||||
input SPI_SCK,
|
||||
input SPI_SS3,
|
||||
input SPI_DI,
|
||||
|
||||
// VGA signals coming from core
|
||||
input [5:0] R_in,
|
||||
input [5:0] G_in,
|
||||
input [5:0] B_in,
|
||||
input HSync,
|
||||
input VSync,
|
||||
|
||||
// VGA signals going to video connector
|
||||
output [5:0] R_out,
|
||||
output [5:0] G_out,
|
||||
output [5:0] B_out
|
||||
);
|
||||
|
||||
parameter OSD_X_OFFSET = 10'd0;
|
||||
parameter OSD_Y_OFFSET = 10'd0;
|
||||
parameter OSD_COLOR = 3'd0;
|
||||
|
||||
localparam OSD_WIDTH = 10'd256;
|
||||
localparam OSD_HEIGHT = 10'd128;
|
||||
|
||||
// *********************************************************************************
|
||||
// spi client
|
||||
// *********************************************************************************
|
||||
|
||||
// this core supports only the display related OSD commands
|
||||
// of the minimig
|
||||
reg osd_enable;
|
||||
(* ramstyle = "no_rw_check" *) reg [7:0] osd_buffer[2047:0]; // the OSD buffer itself
|
||||
|
||||
// the OSD has its own SPI interface to the io controller
|
||||
always@(posedge SPI_SCK, posedge SPI_SS3) begin
|
||||
reg [4:0] cnt;
|
||||
reg [10:0] bcnt;
|
||||
reg [7:0] sbuf;
|
||||
reg [7:0] cmd;
|
||||
|
||||
if(SPI_SS3) begin
|
||||
cnt <= 0;
|
||||
bcnt <= 0;
|
||||
end else begin
|
||||
sbuf <= {sbuf[6:0], SPI_DI};
|
||||
|
||||
// 0:7 is command, rest payload
|
||||
if(cnt < 15) cnt <= cnt + 1'd1;
|
||||
else cnt <= 8;
|
||||
|
||||
if(cnt == 7) begin
|
||||
cmd <= {sbuf[6:0], SPI_DI};
|
||||
|
||||
// lower three command bits are line address
|
||||
bcnt <= {sbuf[1:0], SPI_DI, 8'h00};
|
||||
|
||||
// command 0x40: OSDCMDENABLE, OSDCMDDISABLE
|
||||
if(sbuf[6:3] == 4'b0100) osd_enable <= SPI_DI;
|
||||
end
|
||||
|
||||
// command 0x20: OSDCMDWRITE
|
||||
if((cmd[7:3] == 5'b00100) && (cnt == 15)) begin
|
||||
osd_buffer[bcnt] <= {sbuf[6:0], SPI_DI};
|
||||
bcnt <= bcnt + 1'd1;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
// *********************************************************************************
|
||||
// video timing and sync polarity anaylsis
|
||||
// *********************************************************************************
|
||||
|
||||
// horizontal counter
|
||||
reg [9:0] h_cnt;
|
||||
reg [9:0] hs_low, hs_high;
|
||||
wire hs_pol = hs_high < hs_low;
|
||||
wire [9:0] dsp_width = hs_pol ? hs_low : hs_high;
|
||||
|
||||
// vertical counter
|
||||
reg [9:0] v_cnt;
|
||||
reg [9:0] vs_low, vs_high;
|
||||
wire vs_pol = vs_high < vs_low;
|
||||
wire [9:0] dsp_height = vs_pol ? vs_low : vs_high;
|
||||
|
||||
wire doublescan = (dsp_height>350);
|
||||
|
||||
reg ce_pix;
|
||||
always @(negedge clk_sys) begin
|
||||
integer cnt = 0;
|
||||
integer pixsz, pixcnt;
|
||||
reg hs;
|
||||
|
||||
cnt <= cnt + 1;
|
||||
hs <= HSync;
|
||||
|
||||
pixcnt <= pixcnt + 1;
|
||||
if(pixcnt == pixsz) pixcnt <= 0;
|
||||
ce_pix <= !pixcnt;
|
||||
|
||||
if(hs && ~HSync) begin
|
||||
cnt <= 0;
|
||||
pixsz <= (cnt >> 9) - 1;
|
||||
pixcnt <= 0;
|
||||
ce_pix <= 1;
|
||||
end
|
||||
end
|
||||
|
||||
always @(posedge clk_sys) begin
|
||||
reg hsD, hsD2;
|
||||
reg vsD, vsD2;
|
||||
|
||||
if(ce_pix) begin
|
||||
// bring hsync into local clock domain
|
||||
hsD <= HSync;
|
||||
hsD2 <= hsD;
|
||||
|
||||
// falling edge of HSync
|
||||
if(!hsD && hsD2) begin
|
||||
h_cnt <= 0;
|
||||
hs_high <= h_cnt;
|
||||
end
|
||||
|
||||
// rising edge of HSync
|
||||
else if(hsD && !hsD2) begin
|
||||
h_cnt <= 0;
|
||||
hs_low <= h_cnt;
|
||||
v_cnt <= v_cnt + 1'd1;
|
||||
end else begin
|
||||
h_cnt <= h_cnt + 1'd1;
|
||||
end
|
||||
|
||||
vsD <= VSync;
|
||||
vsD2 <= vsD;
|
||||
|
||||
// falling edge of VSync
|
||||
if(!vsD && vsD2) begin
|
||||
v_cnt <= 0;
|
||||
vs_high <= v_cnt;
|
||||
end
|
||||
|
||||
// rising edge of VSync
|
||||
else if(vsD && !vsD2) begin
|
||||
v_cnt <= 0;
|
||||
vs_low <= v_cnt;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
// area in which OSD is being displayed
|
||||
wire [9:0] h_osd_start = ((dsp_width - OSD_WIDTH)>> 1) + OSD_X_OFFSET;
|
||||
wire [9:0] h_osd_end = h_osd_start + OSD_WIDTH;
|
||||
wire [9:0] v_osd_start = ((dsp_height- (OSD_HEIGHT<<doublescan))>> 1) + OSD_Y_OFFSET;
|
||||
wire [9:0] v_osd_end = v_osd_start + (OSD_HEIGHT<<doublescan);
|
||||
wire [9:0] osd_hcnt = h_cnt - h_osd_start + 1'd1; // one pixel offset for osd_byte register
|
||||
wire [9:0] osd_vcnt = v_cnt - v_osd_start;
|
||||
|
||||
wire osd_de = osd_enable &&
|
||||
(HSync != hs_pol) && (h_cnt >= h_osd_start) && (h_cnt < h_osd_end) &&
|
||||
(VSync != vs_pol) && (v_cnt >= v_osd_start) && (v_cnt < v_osd_end);
|
||||
|
||||
reg [7:0] osd_byte;
|
||||
always @(posedge clk_sys) if(ce_pix) osd_byte <= osd_buffer[{doublescan ? osd_vcnt[7:5] : osd_vcnt[6:4], osd_hcnt[7:0]}];
|
||||
|
||||
wire osd_pixel = osd_byte[doublescan ? osd_vcnt[4:2] : osd_vcnt[3:1]];
|
||||
|
||||
assign R_out = !osd_de ? R_in : {osd_pixel, osd_pixel, OSD_COLOR[2], R_in[5:3]};
|
||||
assign G_out = !osd_de ? G_in : {osd_pixel, osd_pixel, OSD_COLOR[1], G_in[5:3]};
|
||||
assign B_out = !osd_de ? B_in : {osd_pixel, osd_pixel, OSD_COLOR[0], B_in[5:3]};
|
||||
|
||||
endmodule
|
||||
@@ -1,195 +0,0 @@
|
||||
//
|
||||
// scandoubler.v
|
||||
//
|
||||
// Copyright (c) 2015 Till Harbaum <till@harbaum.org>
|
||||
// Copyright (c) 2017 Sorgelig
|
||||
//
|
||||
// This source file is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published
|
||||
// by the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This source file is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
// TODO: Delay vsync one line
|
||||
|
||||
module scandoubler #(parameter LENGTH, parameter HALF_DEPTH)
|
||||
(
|
||||
// system interface
|
||||
input clk_sys,
|
||||
input ce_pix,
|
||||
input ce_pix_actual,
|
||||
|
||||
input hq2x,
|
||||
|
||||
// shifter video interface
|
||||
input hs_in,
|
||||
input vs_in,
|
||||
input line_start,
|
||||
|
||||
input [DWIDTH:0] r_in,
|
||||
input [DWIDTH:0] g_in,
|
||||
input [DWIDTH:0] b_in,
|
||||
input mono,
|
||||
|
||||
// output interface
|
||||
output reg hs_out,
|
||||
output vs_out,
|
||||
output [DWIDTH:0] r_out,
|
||||
output [DWIDTH:0] g_out,
|
||||
output [DWIDTH:0] b_out
|
||||
);
|
||||
|
||||
|
||||
localparam DWIDTH = HALF_DEPTH ? 2 : 5;
|
||||
|
||||
assign vs_out = vs_in;
|
||||
|
||||
reg [2:0] phase;
|
||||
reg [2:0] ce_div;
|
||||
reg [7:0] pix_len = 0;
|
||||
wire [7:0] pl = pix_len + 1'b1;
|
||||
|
||||
reg ce_x1, ce_x4;
|
||||
reg req_line_reset;
|
||||
wire ls_in = hs_in | line_start;
|
||||
always @(negedge clk_sys) begin
|
||||
reg old_ce;
|
||||
reg [2:0] ce_cnt;
|
||||
|
||||
reg [7:0] pixsz2, pixsz4 = 0;
|
||||
|
||||
old_ce <= ce_pix;
|
||||
if(~&pix_len) pix_len <= pix_len + 1'd1;
|
||||
|
||||
ce_x4 <= 0;
|
||||
ce_x1 <= 0;
|
||||
|
||||
// use such odd comparison to place c_x4 evenly if master clock isn't multiple 4.
|
||||
if((pl == pixsz4) || (pl == pixsz2) || (pl == (pixsz2+pixsz4))) begin
|
||||
phase <= phase + 1'd1;
|
||||
ce_x4 <= 1;
|
||||
end
|
||||
|
||||
if(~old_ce & ce_pix) begin
|
||||
pixsz2 <= {1'b0, pl[7:1]};
|
||||
pixsz4 <= {2'b00, pl[7:2]};
|
||||
ce_x1 <= 1;
|
||||
ce_x4 <= 1;
|
||||
pix_len <= 0;
|
||||
phase <= phase + 1'd1;
|
||||
|
||||
ce_cnt <= ce_cnt + 1'd1;
|
||||
if(ce_pix_actual) begin
|
||||
phase <= 0;
|
||||
ce_div <= ce_cnt + 1'd1;
|
||||
ce_cnt <= 0;
|
||||
req_line_reset <= 0;
|
||||
end
|
||||
|
||||
if(ls_in) req_line_reset <= 1;
|
||||
end
|
||||
end
|
||||
|
||||
reg ce_sd;
|
||||
always @(*) begin
|
||||
case(ce_div)
|
||||
2: ce_sd = !phase[0];
|
||||
4: ce_sd = !phase[1:0];
|
||||
default: ce_sd <= 1;
|
||||
endcase
|
||||
end
|
||||
|
||||
`define BITS_TO_FIT(N) ( \
|
||||
N <= 2 ? 0 : \
|
||||
N <= 4 ? 1 : \
|
||||
N <= 8 ? 2 : \
|
||||
N <= 16 ? 3 : \
|
||||
N <= 32 ? 4 : \
|
||||
N <= 64 ? 5 : \
|
||||
N <= 128 ? 6 : \
|
||||
N <= 256 ? 7 : \
|
||||
N <= 512 ? 8 : \
|
||||
N <=1024 ? 9 : 10 )
|
||||
|
||||
localparam AWIDTH = `BITS_TO_FIT(LENGTH);
|
||||
Hq2x #(.LENGTH(LENGTH), .HALF_DEPTH(HALF_DEPTH)) Hq2x
|
||||
(
|
||||
.clk(clk_sys),
|
||||
.ce_x4(ce_x4 & ce_sd),
|
||||
.inputpixel({b_in,g_in,r_in}),
|
||||
.mono(mono),
|
||||
.disable_hq2x(~hq2x),
|
||||
.reset_frame(vs_in),
|
||||
.reset_line(req_line_reset),
|
||||
.read_y(sd_line),
|
||||
.read_x(sd_h_actual),
|
||||
.outpixel({b_out,g_out,r_out})
|
||||
);
|
||||
|
||||
reg [10:0] sd_h_actual;
|
||||
always @(*) begin
|
||||
case(ce_div)
|
||||
2: sd_h_actual = sd_h[10:1];
|
||||
4: sd_h_actual = sd_h[10:2];
|
||||
default: sd_h_actual = sd_h;
|
||||
endcase
|
||||
end
|
||||
|
||||
reg [10:0] sd_h;
|
||||
reg [1:0] sd_line;
|
||||
always @(posedge clk_sys) begin
|
||||
|
||||
reg [11:0] hs_max,hs_rise,hs_ls;
|
||||
reg [10:0] hcnt;
|
||||
reg [11:0] sd_hcnt;
|
||||
|
||||
reg hs, hs2, vs, ls;
|
||||
|
||||
if(ce_x1) begin
|
||||
hs <= hs_in;
|
||||
ls <= ls_in;
|
||||
|
||||
if(ls && !ls_in) hs_ls <= {hcnt,1'b1};
|
||||
|
||||
// falling edge of hsync indicates start of line
|
||||
if(hs && !hs_in) begin
|
||||
hs_max <= {hcnt,1'b1};
|
||||
hcnt <= 0;
|
||||
if(ls && !ls_in) hs_ls <= {10'd0,1'b1};
|
||||
end else begin
|
||||
hcnt <= hcnt + 1'd1;
|
||||
end
|
||||
|
||||
// save position of rising edge
|
||||
if(!hs && hs_in) hs_rise <= {hcnt,1'b1};
|
||||
|
||||
vs <= vs_in;
|
||||
if(vs && ~vs_in) sd_line <= 0;
|
||||
end
|
||||
|
||||
if(ce_x4) begin
|
||||
hs2 <= hs_in;
|
||||
|
||||
// output counter synchronous to input and at twice the rate
|
||||
sd_hcnt <= sd_hcnt + 1'd1;
|
||||
sd_h <= sd_h + 1'd1;
|
||||
if(hs2 && !hs_in) sd_hcnt <= hs_max;
|
||||
if(sd_hcnt == hs_max) sd_hcnt <= 0;
|
||||
|
||||
// replicate horizontal sync at twice the speed
|
||||
if(sd_hcnt == hs_max) hs_out <= 0;
|
||||
if(sd_hcnt == hs_rise) hs_out <= 1;
|
||||
|
||||
if(sd_hcnt == hs_ls) sd_h <= 0;
|
||||
if(sd_hcnt == hs_ls) sd_line <= sd_line + 1'd1;
|
||||
end
|
||||
end
|
||||
|
||||
endmodule
|
||||
@@ -1,141 +0,0 @@
|
||||
//Legal Notice: (C)2006 Altera Corporation. All rights reserved. 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 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 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.
|
||||
|
||||
module I2C_AV_Config ( // Host Side
|
||||
iCLK,
|
||||
iRST_N,
|
||||
// I2C Side
|
||||
I2C_SCLK,
|
||||
I2C_SDAT );
|
||||
// Host Side
|
||||
input iCLK;
|
||||
input iRST_N;
|
||||
// I2C Side
|
||||
output I2C_SCLK;
|
||||
inout I2C_SDAT;
|
||||
// Internal Registers/Wires
|
||||
reg [15:0] mI2C_CLK_DIV;
|
||||
reg [23:0] mI2C_DATA;
|
||||
reg mI2C_CTRL_CLK;
|
||||
reg mI2C_GO;
|
||||
wire mI2C_END;
|
||||
wire mI2C_ACK;
|
||||
reg [15:0] LUT_DATA;
|
||||
reg [3:0] LUT_INDEX;
|
||||
reg [1:0] mSetup_ST;
|
||||
|
||||
// Clock Setting
|
||||
parameter CLK_Freq = 50000000; // 50 MHz
|
||||
parameter I2C_Freq = 20000; // 20 KHz
|
||||
// LUT Data Number
|
||||
parameter LUT_SIZE = 11;
|
||||
// Audio Data Index
|
||||
parameter Dummy_DATA = 0;
|
||||
parameter SET_LIN_L = 1;
|
||||
parameter SET_LIN_R = 2;
|
||||
parameter SET_HEAD_L = 3;
|
||||
parameter SET_HEAD_R = 4;
|
||||
parameter A_PATH_CTRL = 5;
|
||||
parameter D_PATH_CTRL = 6;
|
||||
parameter POWER_ON = 7;
|
||||
parameter SET_FORMAT = 8;
|
||||
parameter SAMPLE_CTRL = 9;
|
||||
parameter SET_ACTIVE = 10;
|
||||
|
||||
///////////////////// I2C Control Clock ////////////////////////
|
||||
always@(posedge iCLK or negedge iRST_N)
|
||||
begin
|
||||
if(!iRST_N)
|
||||
begin
|
||||
mI2C_CTRL_CLK <= 0;
|
||||
mI2C_CLK_DIV <= 0;
|
||||
end
|
||||
else
|
||||
begin
|
||||
if( mI2C_CLK_DIV < (CLK_Freq/I2C_Freq) )
|
||||
mI2C_CLK_DIV <= mI2C_CLK_DIV+16'b1;
|
||||
else
|
||||
begin
|
||||
mI2C_CLK_DIV <= 0;
|
||||
mI2C_CTRL_CLK <= ~mI2C_CTRL_CLK;
|
||||
end
|
||||
end
|
||||
end
|
||||
////////////////////////////////////////////////////////////////////
|
||||
I2C_Controller u0 ( .CLOCK(mI2C_CTRL_CLK), // Controller Work Clock
|
||||
.I2C_SCLK(I2C_SCLK), // I2C CLOCK
|
||||
.I2C_SDAT(I2C_SDAT), // I2C DATA
|
||||
.I2C_DATA(mI2C_DATA), // DATA:[SLAVE_ADDR,SUB_ADDR,DATA]
|
||||
.GO(mI2C_GO), // GO transfor
|
||||
.END(mI2C_END), // END transfor
|
||||
.ACK(mI2C_ACK), // ACK
|
||||
.RESET(iRST_N) );
|
||||
////////////////////////////////////////////////////////////////////
|
||||
////////////////////// Config Control ////////////////////////////
|
||||
always@(posedge mI2C_CTRL_CLK or negedge iRST_N)
|
||||
begin
|
||||
if(!iRST_N)
|
||||
begin
|
||||
LUT_INDEX <= 0;
|
||||
mSetup_ST <= 0;
|
||||
mI2C_GO <= 0;
|
||||
end
|
||||
else
|
||||
begin
|
||||
if(LUT_INDEX<LUT_SIZE)
|
||||
begin
|
||||
case(mSetup_ST)
|
||||
0: begin
|
||||
mI2C_DATA <= {8'h34,LUT_DATA};
|
||||
mI2C_GO <= 1;
|
||||
mSetup_ST <= 1;
|
||||
end
|
||||
1: begin
|
||||
if(mI2C_END)
|
||||
begin
|
||||
if(!mI2C_ACK)
|
||||
mSetup_ST <= 2;
|
||||
else
|
||||
mSetup_ST <= 0;
|
||||
mI2C_GO <= 0;
|
||||
end
|
||||
end
|
||||
2: begin
|
||||
LUT_INDEX <= LUT_INDEX+4'b1;
|
||||
mSetup_ST <= 0;
|
||||
end
|
||||
endcase
|
||||
end
|
||||
end
|
||||
end
|
||||
////////////////////////////////////////////////////////////////////
|
||||
///////////////////// Config Data LUT //////////////////////////
|
||||
always
|
||||
begin
|
||||
case(LUT_INDEX)
|
||||
// Audio Config Data
|
||||
Dummy_DATA : LUT_DATA <= 16'h0000;
|
||||
SET_LIN_L : LUT_DATA <= 16'h0017;
|
||||
SET_LIN_R : LUT_DATA <= 16'h0217;
|
||||
SET_HEAD_L : LUT_DATA <= 16'h0479;
|
||||
SET_HEAD_R : LUT_DATA <= 16'h0679;
|
||||
A_PATH_CTRL : LUT_DATA <= 16'h08F2;
|
||||
D_PATH_CTRL : LUT_DATA <= 16'h0A06;
|
||||
POWER_ON : LUT_DATA <= 16'h0C00;
|
||||
SET_FORMAT : LUT_DATA <= 16'h0E01;
|
||||
SAMPLE_CTRL : LUT_DATA <= 16'h1002;
|
||||
SET_ACTIVE : LUT_DATA <= 16'h1201;
|
||||
default : LUT_DATA <= 16'h0000;
|
||||
endcase
|
||||
end
|
||||
////////////////////////////////////////////////////////////////////
|
||||
endmodule
|
||||
@@ -1,108 +0,0 @@
|
||||
//Legal Notice: (C)2006 Altera Corporation. All rights reserved. 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 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 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.
|
||||
|
||||
module I2C_Controller (
|
||||
CLOCK,
|
||||
I2C_SCLK,//I2C CLOCK
|
||||
I2C_SDAT,//I2C DATA
|
||||
I2C_DATA,//DATA:[SLAVE_ADDR,SUB_ADDR,DATA]
|
||||
GO, //GO transfor
|
||||
END, //END transfor
|
||||
ACK, //ACK
|
||||
RESET
|
||||
);
|
||||
input CLOCK;
|
||||
input [23:0]I2C_DATA;
|
||||
input GO;
|
||||
input RESET;
|
||||
inout I2C_SDAT;
|
||||
output I2C_SCLK;
|
||||
output END;
|
||||
output ACK;
|
||||
|
||||
reg SDO;
|
||||
reg SCLK;
|
||||
reg END;
|
||||
reg [23:0]SD;
|
||||
reg [5:0]SD_COUNTER;
|
||||
|
||||
wire I2C_SCLK=SCLK | ( ((SD_COUNTER >= 4) & (SD_COUNTER <=30))? ~CLOCK :1'b0 );
|
||||
wire I2C_SDAT=SDO?1'bz:1'b0;
|
||||
|
||||
reg ACK1,ACK2,ACK3;
|
||||
wire ACK=ACK1 | ACK2 |ACK3;
|
||||
|
||||
//--I2C COUNTER
|
||||
always @(negedge RESET or posedge CLOCK ) begin
|
||||
if (!RESET) SD_COUNTER=6'b111111;
|
||||
else begin
|
||||
if (GO==0)
|
||||
SD_COUNTER=0;
|
||||
else
|
||||
if (SD_COUNTER < 6'b111111) SD_COUNTER=SD_COUNTER+6'b1;
|
||||
end
|
||||
end
|
||||
//----
|
||||
|
||||
always @(negedge RESET or posedge CLOCK ) begin
|
||||
if (!RESET) begin SCLK=1;SDO=1; ACK1=0;ACK2=0;ACK3=0; END=1; end
|
||||
else
|
||||
case (SD_COUNTER)
|
||||
6'd0 : begin ACK1=0 ;ACK2=0 ;ACK3=0 ; END=0; SDO=1; SCLK=1;end
|
||||
//start
|
||||
6'd1 : begin SD=I2C_DATA;SDO=0;end
|
||||
6'd2 : SCLK=0;
|
||||
//SLAVE ADDR
|
||||
6'd3 : SDO=SD[23];
|
||||
6'd4 : SDO=SD[22];
|
||||
6'd5 : SDO=SD[21];
|
||||
6'd6 : SDO=SD[20];
|
||||
6'd7 : SDO=SD[19];
|
||||
6'd8 : SDO=SD[18];
|
||||
6'd9 : SDO=SD[17];
|
||||
6'd10 : SDO=SD[16];
|
||||
6'd11 : SDO=1'b1;//ACK
|
||||
|
||||
//SUB ADDR
|
||||
6'd12 : begin SDO=SD[15]; ACK1=I2C_SDAT; end
|
||||
6'd13 : SDO=SD[14];
|
||||
6'd14 : SDO=SD[13];
|
||||
6'd15 : SDO=SD[12];
|
||||
6'd16 : SDO=SD[11];
|
||||
6'd17 : SDO=SD[10];
|
||||
6'd18 : SDO=SD[9];
|
||||
6'd19 : SDO=SD[8];
|
||||
6'd20 : SDO=1'b1;//ACK
|
||||
|
||||
//DATA
|
||||
6'd21 : begin SDO=SD[7]; ACK2=I2C_SDAT; end
|
||||
6'd22 : SDO=SD[6];
|
||||
6'd23 : SDO=SD[5];
|
||||
6'd24 : SDO=SD[4];
|
||||
6'd25 : SDO=SD[3];
|
||||
6'd26 : SDO=SD[2];
|
||||
6'd27 : SDO=SD[1];
|
||||
6'd28 : SDO=SD[0];
|
||||
6'd29 : SDO=1'b1;//ACK
|
||||
|
||||
|
||||
//stop
|
||||
6'd30 : begin SDO=1'b0; SCLK=1'b0; ACK3=I2C_SDAT; end
|
||||
6'd31 : SCLK=1'b1;
|
||||
6'd32 : begin SDO=1'b1; END=1; end
|
||||
|
||||
endcase
|
||||
end
|
||||
|
||||
|
||||
|
||||
endmodule
|
||||
@@ -1,242 +0,0 @@
|
||||
//
|
||||
//
|
||||
// Copyright (c) 2017 Sorgelig
|
||||
//
|
||||
// This program is GPL Licensed. See COPYING for the full license.
|
||||
//
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
`timescale 1ns / 1ps
|
||||
|
||||
//
|
||||
// LINE_LENGTH: Length of display line in pixels
|
||||
// Usually it's length from HSync to HSync.
|
||||
// May be less if line_start is used.
|
||||
//
|
||||
// HALF_DEPTH: If =1 then color dept is 3 bits per component
|
||||
// For half depth 6 bits monochrome is available with
|
||||
// mono signal enabled and color = {G, R}
|
||||
|
||||
module video_mixer
|
||||
#(
|
||||
parameter LINE_LENGTH = 768,
|
||||
parameter HALF_DEPTH = 0,
|
||||
|
||||
parameter OSD_COLOR = 3'd4,
|
||||
parameter OSD_X_OFFSET = 10'd0,
|
||||
parameter OSD_Y_OFFSET = 10'd0
|
||||
)
|
||||
(
|
||||
// master clock
|
||||
// it should be multiple by (ce_pix*4).
|
||||
input clk_sys,
|
||||
|
||||
// Pixel clock or clock_enable (both are accepted).
|
||||
input ce_pix,
|
||||
|
||||
// Some systems have multiple resolutions.
|
||||
// ce_pix_actual should match ce_pix where every second or fourth pulse is enabled,
|
||||
// thus half or qurter resolutions can be used without brake video sync while switching resolutions.
|
||||
// For fixed single resolution (or when video sync stability isn't required) ce_pix_actual = ce_pix.
|
||||
input ce_pix_actual,
|
||||
|
||||
// OSD SPI interface
|
||||
input SPI_SCK,
|
||||
input SPI_SS3,
|
||||
input SPI_DI,
|
||||
|
||||
// scanlines (00-none 01-25% 10-50% 11-75%)
|
||||
input [1:0] scanlines,
|
||||
|
||||
// 0 = HVSync 31KHz, 1 = CSync 15KHz
|
||||
input scandoubler_disable,
|
||||
|
||||
// High quality 2x scaling
|
||||
input hq2x,
|
||||
|
||||
// YPbPr always uses composite sync
|
||||
input ypbpr,
|
||||
|
||||
// 0 = 16-240 range. 1 = 0-255 range. (only for YPbPr color space)
|
||||
input ypbpr_full,
|
||||
|
||||
// color
|
||||
input [DWIDTH:0] R,
|
||||
input [DWIDTH:0] G,
|
||||
input [DWIDTH:0] B,
|
||||
|
||||
// Monochrome mode (for HALF_DEPTH only)
|
||||
input mono,
|
||||
|
||||
// interlace sync. Positive pulses.
|
||||
input HSync,
|
||||
input VSync,
|
||||
|
||||
// Falling of this signal means start of informative part of line.
|
||||
// It can be horizontal blank signal.
|
||||
// This signal can be used to reduce amount of required FPGA RAM for HQ2x scan doubler
|
||||
// If FPGA RAM is not an issue, then simply set it to 0 for whole line processing.
|
||||
// Keep in mind: due to algo first and last pixels of line should be black to avoid side artefacts.
|
||||
// Thus, if blank signal is used to reduce the line, make sure to feed at least one black (or paper) pixel
|
||||
// before first informative pixel.
|
||||
input line_start,
|
||||
|
||||
// MiST video output signals
|
||||
output [5:0] VGA_R,
|
||||
output [5:0] VGA_G,
|
||||
output [5:0] VGA_B,
|
||||
output VGA_VS,
|
||||
output VGA_HS
|
||||
);
|
||||
|
||||
localparam DWIDTH = HALF_DEPTH ? 2 : 5;
|
||||
|
||||
wire [DWIDTH:0] R_sd;
|
||||
wire [DWIDTH:0] G_sd;
|
||||
wire [DWIDTH:0] B_sd;
|
||||
wire hs_sd, vs_sd;
|
||||
|
||||
scandoubler #(.LENGTH(LINE_LENGTH), .HALF_DEPTH(HALF_DEPTH)) scandoubler
|
||||
(
|
||||
.*,
|
||||
.hs_in(HSync),
|
||||
.vs_in(VSync),
|
||||
.r_in(R),
|
||||
.g_in(G),
|
||||
.b_in(B),
|
||||
|
||||
.hs_out(hs_sd),
|
||||
.vs_out(vs_sd),
|
||||
.r_out(R_sd),
|
||||
.g_out(G_sd),
|
||||
.b_out(B_sd)
|
||||
);
|
||||
|
||||
wire [DWIDTH:0] rt = (scandoubler_disable ? R : R_sd);
|
||||
wire [DWIDTH:0] gt = (scandoubler_disable ? G : G_sd);
|
||||
wire [DWIDTH:0] bt = (scandoubler_disable ? B : B_sd);
|
||||
|
||||
generate
|
||||
if(HALF_DEPTH) begin
|
||||
wire [5:0] r = mono ? {gt,rt} : {rt,rt};
|
||||
wire [5:0] g = mono ? {gt,rt} : {gt,gt};
|
||||
wire [5:0] b = mono ? {gt,rt} : {bt,bt};
|
||||
end else begin
|
||||
wire [5:0] r = rt;
|
||||
wire [5:0] g = gt;
|
||||
wire [5:0] b = bt;
|
||||
end
|
||||
endgenerate
|
||||
|
||||
wire hs = (scandoubler_disable ? HSync : hs_sd);
|
||||
wire vs = (scandoubler_disable ? VSync : vs_sd);
|
||||
|
||||
reg scanline = 0;
|
||||
always @(posedge clk_sys) begin
|
||||
reg old_hs, old_vs;
|
||||
|
||||
old_hs <= hs;
|
||||
old_vs <= vs;
|
||||
|
||||
if(old_hs && ~hs) scanline <= ~scanline;
|
||||
if(old_vs && ~vs) scanline <= 0;
|
||||
end
|
||||
|
||||
wire [5:0] r_out, g_out, b_out;
|
||||
always @(*) begin
|
||||
case(scanlines & {scanline, scanline})
|
||||
1: begin // reduce 25% = 1/2 + 1/4
|
||||
r_out = {1'b0, r[5:1]} + {2'b00, r[5:2]};
|
||||
g_out = {1'b0, g[5:1]} + {2'b00, g[5:2]};
|
||||
b_out = {1'b0, b[5:1]} + {2'b00, b[5:2]};
|
||||
end
|
||||
|
||||
2: begin // reduce 50% = 1/2
|
||||
r_out = {1'b0, r[5:1]};
|
||||
g_out = {1'b0, g[5:1]};
|
||||
b_out = {1'b0, b[5:1]};
|
||||
end
|
||||
|
||||
3: begin // reduce 75% = 1/4
|
||||
r_out = {2'b00, r[5:2]};
|
||||
g_out = {2'b00, g[5:2]};
|
||||
b_out = {2'b00, b[5:2]};
|
||||
end
|
||||
|
||||
default: begin
|
||||
r_out = r;
|
||||
g_out = g;
|
||||
b_out = b;
|
||||
end
|
||||
endcase
|
||||
end
|
||||
|
||||
wire [5:0] red, green, blue;
|
||||
osd #(OSD_X_OFFSET, OSD_Y_OFFSET, OSD_COLOR) osd
|
||||
(
|
||||
.*,
|
||||
|
||||
.R_in(r_out),
|
||||
.G_in(g_out),
|
||||
.B_in(b_out),
|
||||
.HSync(hs),
|
||||
.VSync(vs),
|
||||
|
||||
.R_out(red),
|
||||
.G_out(green),
|
||||
.B_out(blue)
|
||||
);
|
||||
|
||||
wire [5:0] yuv_full[225] = '{
|
||||
6'd0, 6'd0, 6'd0, 6'd0, 6'd1, 6'd1, 6'd1, 6'd1,
|
||||
6'd2, 6'd2, 6'd2, 6'd3, 6'd3, 6'd3, 6'd3, 6'd4,
|
||||
6'd4, 6'd4, 6'd5, 6'd5, 6'd5, 6'd5, 6'd6, 6'd6,
|
||||
6'd6, 6'd7, 6'd7, 6'd7, 6'd7, 6'd8, 6'd8, 6'd8,
|
||||
6'd9, 6'd9, 6'd9, 6'd9, 6'd10, 6'd10, 6'd10, 6'd11,
|
||||
6'd11, 6'd11, 6'd11, 6'd12, 6'd12, 6'd12, 6'd13, 6'd13,
|
||||
6'd13, 6'd13, 6'd14, 6'd14, 6'd14, 6'd15, 6'd15, 6'd15,
|
||||
6'd15, 6'd16, 6'd16, 6'd16, 6'd17, 6'd17, 6'd17, 6'd17,
|
||||
6'd18, 6'd18, 6'd18, 6'd19, 6'd19, 6'd19, 6'd19, 6'd20,
|
||||
6'd20, 6'd20, 6'd21, 6'd21, 6'd21, 6'd21, 6'd22, 6'd22,
|
||||
6'd22, 6'd23, 6'd23, 6'd23, 6'd23, 6'd24, 6'd24, 6'd24,
|
||||
6'd25, 6'd25, 6'd25, 6'd25, 6'd26, 6'd26, 6'd26, 6'd27,
|
||||
6'd27, 6'd27, 6'd27, 6'd28, 6'd28, 6'd28, 6'd29, 6'd29,
|
||||
6'd29, 6'd29, 6'd30, 6'd30, 6'd30, 6'd31, 6'd31, 6'd31,
|
||||
6'd31, 6'd32, 6'd32, 6'd32, 6'd33, 6'd33, 6'd33, 6'd33,
|
||||
6'd34, 6'd34, 6'd34, 6'd35, 6'd35, 6'd35, 6'd35, 6'd36,
|
||||
6'd36, 6'd36, 6'd36, 6'd37, 6'd37, 6'd37, 6'd38, 6'd38,
|
||||
6'd38, 6'd38, 6'd39, 6'd39, 6'd39, 6'd40, 6'd40, 6'd40,
|
||||
6'd40, 6'd41, 6'd41, 6'd41, 6'd42, 6'd42, 6'd42, 6'd42,
|
||||
6'd43, 6'd43, 6'd43, 6'd44, 6'd44, 6'd44, 6'd44, 6'd45,
|
||||
6'd45, 6'd45, 6'd46, 6'd46, 6'd46, 6'd46, 6'd47, 6'd47,
|
||||
6'd47, 6'd48, 6'd48, 6'd48, 6'd48, 6'd49, 6'd49, 6'd49,
|
||||
6'd50, 6'd50, 6'd50, 6'd50, 6'd51, 6'd51, 6'd51, 6'd52,
|
||||
6'd52, 6'd52, 6'd52, 6'd53, 6'd53, 6'd53, 6'd54, 6'd54,
|
||||
6'd54, 6'd54, 6'd55, 6'd55, 6'd55, 6'd56, 6'd56, 6'd56,
|
||||
6'd56, 6'd57, 6'd57, 6'd57, 6'd58, 6'd58, 6'd58, 6'd58,
|
||||
6'd59, 6'd59, 6'd59, 6'd60, 6'd60, 6'd60, 6'd60, 6'd61,
|
||||
6'd61, 6'd61, 6'd62, 6'd62, 6'd62, 6'd62, 6'd63, 6'd63,
|
||||
6'd63
|
||||
};
|
||||
|
||||
// http://marsee101.blog19.fc2.com/blog-entry-2311.html
|
||||
// Y = 16 + 0.257*R + 0.504*G + 0.098*B (Y = 0.299*R + 0.587*G + 0.114*B)
|
||||
// Pb = 128 - 0.148*R - 0.291*G + 0.439*B (Pb = -0.169*R - 0.331*G + 0.500*B)
|
||||
// Pr = 128 + 0.439*R - 0.368*G - 0.071*B (Pr = 0.500*R - 0.419*G - 0.081*B)
|
||||
|
||||
wire [18:0] y_8 = 19'd04096 + ({red, 8'd0} + {red, 3'd0}) + ({green, 9'd0} + {green, 2'd0}) + ({blue, 6'd0} + {blue, 5'd0} + {blue, 2'd0});
|
||||
wire [18:0] pb_8 = 19'd32768 - ({red, 7'd0} + {red, 4'd0} + {red, 3'd0}) - ({green, 8'd0} + {green, 5'd0} + {green, 3'd0}) + ({blue, 8'd0} + {blue, 7'd0} + {blue, 6'd0});
|
||||
wire [18:0] pr_8 = 19'd32768 + ({red, 8'd0} + {red, 7'd0} + {red, 6'd0}) - ({green, 8'd0} + {green, 6'd0} + {green, 5'd0} + {green, 4'd0} + {green, 3'd0}) - ({blue, 6'd0} + {blue , 3'd0});
|
||||
|
||||
wire [7:0] y = ( y_8[17:8] < 16) ? 8'd16 : ( y_8[17:8] > 235) ? 8'd235 : y_8[15:8];
|
||||
wire [7:0] pb = (pb_8[17:8] < 16) ? 8'd16 : (pb_8[17:8] > 240) ? 8'd240 : pb_8[15:8];
|
||||
wire [7:0] pr = (pr_8[17:8] < 16) ? 8'd16 : (pr_8[17:8] > 240) ? 8'd240 : pr_8[15:8];
|
||||
|
||||
assign VGA_R = ypbpr ? (ypbpr_full ? yuv_full[pr-8'd16] : pr[7:2]) : red;
|
||||
assign VGA_G = ypbpr ? (ypbpr_full ? yuv_full[y -8'd16] : y[7:2]) : green;
|
||||
assign VGA_B = ypbpr ? (ypbpr_full ? yuv_full[pb-8'd16] : pb[7:2]) : blue;
|
||||
assign VGA_VS = (scandoubler_disable | ypbpr) ? 1'b1 : ~vs_sd;
|
||||
assign VGA_HS = scandoubler_disable ? ~(HSync ^ VSync) : ypbpr ? ~(hs_sd ^ vs_sd) : ~hs_sd;
|
||||
|
||||
endmodule
|
||||
Reference in New Issue
Block a user