mirror of
https://github.com/Gehstock/Mist_FPGA.git
synced 2026-04-03 12:03:08 +00:00
Move Binarys to a new Repo
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -150,13 +150,6 @@ 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
|
||||
@@ -164,10 +157,23 @@ 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 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_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_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top
|
||||
@@ -1,2 +1,7 @@
|
||||
{ "" "" "" "*" { } { } 0 13012 "" 0 0 "Quartus II" 0 -1 0 ""}
|
||||
{ "" "" "" "*" { } { } 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 ""}
|
||||
|
||||
Binary file not shown.
257
Computer_MiST/Bashkiria2M_MiST/rtl/BIOS4.HEX
Normal file
257
Computer_MiST/Bashkiria2M_MiST/rtl/BIOS4.HEX
Normal file
@@ -0,0 +1,257 @@
|
||||
: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[12:0] DRAM_ADDR, // SDRAM Address bus 12 Bits
|
||||
output reg[11: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 [15:0] idata,
|
||||
input [7: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[7:0] : 8'bZZZZZZZZ;
|
||||
assign DRAM_DQ[15:8] = (state == ST_WRITE0) ? data[7:0] : 8'bZZZZZZZZ;
|
||||
assign DRAM_DQ[7:0] = (state==ST_WRITE0) ? data : 8'bZZZZZZZZ;
|
||||
assign DRAM_DQ[15:8] = (state == ST_WRITE0) ? data : 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 = 13'b100000;
|
||||
ST_RAS0: DRAM_ADDR = addr[20:8];
|
||||
default: DRAM_ADDR = {5'b00100,addr[7:0]};
|
||||
ST_RESET0: DRAM_ADDR = 12'b100000;
|
||||
ST_RAS0: DRAM_ADDR = addr[19:8];
|
||||
default: DRAM_ADDR = {4'b0100,addr[7:0]};
|
||||
endcase
|
||||
case (state)
|
||||
ST_RESET0: {DRAM_RAS_N,DRAM_CAS_N,DRAM_WE_N} = 3'b000;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
module b2m_mist(
|
||||
input CLOCK_27,
|
||||
module b2m_mist
|
||||
(
|
||||
input CLOCK_27,
|
||||
output LED,
|
||||
output SPI_DO,
|
||||
input SPI_DI,
|
||||
@@ -8,17 +9,17 @@ module b2m_mist(
|
||||
input SPI_SS3,
|
||||
input SPI_SS4,
|
||||
input CONF_DATA0,
|
||||
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,
|
||||
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
|
||||
output AUDIO_L,
|
||||
output AUDIO_R,
|
||||
output VGA_HS,
|
||||
@@ -32,28 +33,34 @@ module b2m_mist(
|
||||
`include "rtl\build_id.v"
|
||||
|
||||
localparam CONF_STR = {
|
||||
"Bashkiria 2M;;",
|
||||
"B2M;;",
|
||||
"O2,Turbo ,ON,OFF;",
|
||||
"O3,Color Mode ,COLOR,B/W;",
|
||||
"O4,Video Mode ,PAL,NTSC;",
|
||||
"O56,Scandoubler Fx,None,CRT 25%,CRT 50%,CRT 75%;",
|
||||
"O56,Scandoubler Fx,None,HQ2x,CRT 25%,CRT 50%;",
|
||||
"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 scandoublerD;
|
||||
wire ypbpr;
|
||||
wire ps2_kbd_clk;
|
||||
wire ps2_kbd_data;
|
||||
wire [15:0] audio;
|
||||
wire [7:0] kbjoy;
|
||||
|
||||
wire [7:0] joystick_0;
|
||||
wire [7:0] joystick_1;
|
||||
wire scandoubler_disable;
|
||||
wire ypbpr;
|
||||
wire ps2_kbd_clk, 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;
|
||||
|
||||
@@ -61,11 +68,102 @@ 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] ),
|
||||
@@ -94,95 +192,14 @@ b2m_top b2m_top(
|
||||
.SD_CMD(sd_sdi),
|
||||
.SD_CLK(sd_sck)
|
||||
);
|
||||
|
||||
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(
|
||||
|
||||
dac dac(
|
||||
.clk_i(clk_sys),
|
||||
.res_n_i(1),
|
||||
.dac_i(audio),
|
||||
.dac_o(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)
|
||||
);
|
||||
);
|
||||
|
||||
assign AUDIO_R = AUDIO_L;
|
||||
|
||||
endmodule
|
||||
|
||||
@@ -107,10 +107,11 @@ reg[7:0] mem_o;
|
||||
always @(negedge memvidbusy) vid_data <= dramout;
|
||||
always @(negedge memcpubusy) mem_o <= dramout[7:0];
|
||||
|
||||
|
||||
bios rom(
|
||||
.addr(addrbus[12:0]),
|
||||
.clk(clk50mhz),
|
||||
.data(rom_o)
|
||||
.address(addrbus[12:0]),
|
||||
.clock(clk50mhz),
|
||||
.q(rom_o)
|
||||
);
|
||||
|
||||
//////////////////// CPU ////////////////////
|
||||
@@ -160,7 +161,7 @@ wire cpu_ce = cpu_ce2;
|
||||
|
||||
always @(posedge clk50mhz) begin
|
||||
vidce2<=vidce;
|
||||
cpu_cnt <= cpu_cnt + 1'b1;
|
||||
cpu_cnt <= cpu_cnt + 1;
|
||||
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};
|
||||
@@ -332,7 +333,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;
|
||||
|
||||
159
Computer_MiST/Bashkiria2M_MiST/rtl/bios.v
Normal file
159
Computer_MiST/Bashkiria2M_MiST/rtl/bios.v
Normal file
@@ -0,0 +1,159 @@
|
||||
// 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
|
||||
@@ -1,534 +0,0 @@
|
||||
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;
|
||||
48
Computer_MiST/Bashkiria2M_MiST/rtl/dac.vhd
Normal file
48
Computer_MiST/Bashkiria2M_MiST/rtl/dac.vhd
Normal file
@@ -0,0 +1,48 @@
|
||||
-------------------------------------------------------------------------------
|
||||
--
|
||||
-- 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;
|
||||
511
Computer_MiST/Bashkiria2M_MiST/rtl/mist_io.v
Normal file
511
Computer_MiST/Bashkiria2M_MiST/rtl/mist_io.v
Normal file
@@ -0,0 +1,511 @@
|
||||
//
|
||||
// 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
|
||||
179
Computer_MiST/Bashkiria2M_MiST/rtl/osd.v
Normal file
179
Computer_MiST/Bashkiria2M_MiST/rtl/osd.v
Normal file
@@ -0,0 +1,179 @@
|
||||
// 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
|
||||
195
Computer_MiST/Bashkiria2M_MiST/rtl/scandoubler.v
Normal file
195
Computer_MiST/Bashkiria2M_MiST/rtl/scandoubler.v
Normal file
@@ -0,0 +1,195 @@
|
||||
//
|
||||
// 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
|
||||
141
Computer_MiST/Bashkiria2M_MiST/rtl/unused/I2C_AV_Config.v
Normal file
141
Computer_MiST/Bashkiria2M_MiST/rtl/unused/I2C_AV_Config.v
Normal file
@@ -0,0 +1,141 @@
|
||||
//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
|
||||
108
Computer_MiST/Bashkiria2M_MiST/rtl/unused/I2C_Controller.v
Normal file
108
Computer_MiST/Bashkiria2M_MiST/rtl/unused/I2C_Controller.v
Normal file
@@ -0,0 +1,108 @@
|
||||
//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
|
||||
242
Computer_MiST/Bashkiria2M_MiST/rtl/video_mixer.sv
Normal file
242
Computer_MiST/Bashkiria2M_MiST/rtl/video_mixer.sv
Normal file
@@ -0,0 +1,242 @@
|
||||
//
|
||||
//
|
||||
// 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
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user