📄 bootrom.v
字号:
// Copyright 2006, 2007 Dennis van Weeren//// This file is part of Minimig//// Minimig 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.//// Minimig 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/>.//////// This is the Minimig boot rom// The bootrom contains code for early startup of the Minimig.// The bootrom will download the kickstart rom image trough the floppy // interface to the kickstart ram area. //// 11-04-2005 -removed rd signal because it is no longer necessary// 19-04-2005 -expanded to 2Kbyte address space// 21-12-2005 -added rd input// 27-11-2006 -rom now implemented using blockram//JB:// 2008-05-14 -Verilog 2001 style module definition// 2008-05-14 -new bootloader module bootrom( input clk, //bus clock input aen, //rom enable input rd, //bus read input [10:1]address, //address in output reg [15:0]dataout //data out);reg [10:1]romaddress;reg [15:0]romdata;//use clocked address to infer blockramalways @(negedge clk) romaddress[10:1]<=address[10:1];//the rom itself//FPGA core version is stored in words 4-7 as 8 ASCII characters // bytes:// 0-1: vendor id (YQ for JB :-)// 2-3: year// 4-5: month// 6-7: day//if all goes well this rom will be implemented using blockramalways @(romaddress)begin case(romaddress) 0000: romdata[15:0] = 16'h0001; 0001: romdata[15:0] = 16'h0000; 0002: romdata[15:0] = 16'h0000; 0003: romdata[15:0] = 16'h0010;// 0004: romdata[15:0] = 16'h5951;//vendor// 0005: romdata[15:0] = 16'h3038;//year// 0006: romdata[15:0] = 16'h3037;//month// 0007: romdata[15:0] = 16'h3239;//day 0004: romdata[15:0] = 16'h4141;//vendor 0005: romdata[15:0] = 16'h3030;//year 0006: romdata[15:0] = 16'h3030;//month 0007: romdata[15:0] = 16'h3030;//day 0008: romdata[15:0] = 16'h4DF9; 0009: romdata[15:0] = 16'h00DF; 0010: romdata[15:0] = 16'hF000; 0011: romdata[15:0] = 16'h6100; 0012: romdata[15:0] = 16'h031C; 0013: romdata[15:0] = 16'h3D7C; 0014: romdata[15:0] = 16'h9000; 0015: romdata[15:0] = 16'h0100; 0016: romdata[15:0] = 16'h3D7C; 0017: romdata[15:0] = 16'h0000; 0018: romdata[15:0] = 16'h0102; 0019: romdata[15:0] = 16'h3D7C; 0020: romdata[15:0] = 16'h0000; 0021: romdata[15:0] = 16'h0104; 0022: romdata[15:0] = 16'h3D7C; 0023: romdata[15:0] = 16'h0000; 0024: romdata[15:0] = 16'h0108; 0025: romdata[15:0] = 16'h3D7C; 0026: romdata[15:0] = 16'h0000; 0027: romdata[15:0] = 16'h010A; 0028: romdata[15:0] = 16'h3D7C; 0029: romdata[15:0] = 16'h003C; 0030: romdata[15:0] = 16'h0092; 0031: romdata[15:0] = 16'h3D7C; 0032: romdata[15:0] = 16'h00D4; 0033: romdata[15:0] = 16'h0094; 0034: romdata[15:0] = 16'h3D7C; 0035: romdata[15:0] = 16'h2C81; 0036: romdata[15:0] = 16'h008E; 0037: romdata[15:0] = 16'h3D7C; 0038: romdata[15:0] = 16'hF4C1; 0039: romdata[15:0] = 16'h0090; 0040: romdata[15:0] = 16'h3D7C; 0041: romdata[15:0] = 16'h037F; //background colour 0042: romdata[15:0] = 16'h0180; 0043: romdata[15:0] = 16'h3D7C; 0044: romdata[15:0] = 16'h0FFF; //text colour 0045: romdata[15:0] = 16'h0182; 0046: romdata[15:0] = 16'h41F9; 0047: romdata[15:0] = 16'h0000; 0048: romdata[15:0] = 16'h034E; 0049: romdata[15:0] = 16'h43F9; 0050: romdata[15:0] = 16'h0000; 0051: romdata[15:0] = 16'hC100; 0052: romdata[15:0] = 16'h7002; 0053: romdata[15:0] = 16'h22D8; 0054: romdata[15:0] = 16'h51C8; 0055: romdata[15:0] = 16'hFFFC; 0056: romdata[15:0] = 16'h2D7C; 0057: romdata[15:0] = 16'h0000; 0058: romdata[15:0] = 16'hC100; 0059: romdata[15:0] = 16'h0080; 0060: romdata[15:0] = 16'h3D40; 0061: romdata[15:0] = 16'h0088; 0062: romdata[15:0] = 16'h3D7C; 0063: romdata[15:0] = 16'h8390; 0064: romdata[15:0] = 16'h0096; 0065: romdata[15:0] = 16'h3D7C; 0066: romdata[15:0] = 16'h7FFF; 0067: romdata[15:0] = 16'h009E; 0068: romdata[15:0] = 16'h41F9; 0069: romdata[15:0] = 16'h0000; 0070: romdata[15:0] = 16'h035A; 0071: romdata[15:0] = 16'h6100; 0072: romdata[15:0] = 16'h027E; 0073: romdata[15:0] = 16'h41F9; 0074: romdata[15:0] = 16'h0000; 0075: romdata[15:0] = 16'h03AA; 0076: romdata[15:0] = 16'h6100; 0077: romdata[15:0] = 16'h0274; 0078: romdata[15:0] = 16'h41F9; 0079: romdata[15:0] = 16'h0000; 0080: romdata[15:0] = 16'h03C1; 0081: romdata[15:0] = 16'h6100; 0082: romdata[15:0] = 16'h026A; 0083: romdata[15:0] = 16'h45F9; 0084: romdata[15:0] = 16'h0000; 0085: romdata[15:0] = 16'h0008; 0086: romdata[15:0] = 16'h7E07; 0087: romdata[15:0] = 16'h101A; 0088: romdata[15:0] = 16'h6100; 0089: romdata[15:0] = 16'h0208; 0090: romdata[15:0] = 16'h51CF; 0091: romdata[15:0] = 16'hFFF8; 0092: romdata[15:0] = 16'h41F9; 0093: romdata[15:0] = 16'h0000; 0094: romdata[15:0] = 16'h03CE; 0095: romdata[15:0] = 16'h6100; 0096: romdata[15:0] = 16'h024E; 0097: romdata[15:0] = 16'h302E; 0098: romdata[15:0] = 16'h0004; 0099: romdata[15:0] = 16'hE048; 0100: romdata[15:0] = 16'h0200; 0101: romdata[15:0] = 16'h007F; 0102: romdata[15:0] = 16'h6100; 0103: romdata[15:0] = 16'h01CE; 0104: romdata[15:0] = 16'h41F9; 0105: romdata[15:0] = 16'h0000; 0106: romdata[15:0] = 16'h03DC; 0107: romdata[15:0] = 16'h0801; 0108: romdata[15:0] = 16'h0004; 0109: romdata[15:0] = 16'h6700; 0110: romdata[15:0] = 16'h0008; 0111: romdata[15:0] = 16'h41F9; 0112: romdata[15:0] = 16'h0000; 0113: romdata[15:0] = 16'h03E3; 0114: romdata[15:0] = 16'h6100; 0115: romdata[15:0] = 16'h0228; 0116: romdata[15:0] = 16'h41F9; 0117: romdata[15:0] = 16'h0000; 0118: romdata[15:0] = 16'h03EB; 0119: romdata[15:0] = 16'h6100; 0120: romdata[15:0] = 16'h021E; 0121: romdata[15:0] = 16'h302E; 0122: romdata[15:0] = 16'h007C; 0123: romdata[15:0] = 16'h6100; 0124: romdata[15:0] = 16'h01A4; 0125: romdata[15:0] = 16'h700A; 0126: romdata[15:0] = 16'h6100; 0127: romdata[15:0] = 16'h01BC; 0128: romdata[15:0] = 16'h700A; 0129: romdata[15:0] = 16'h6100; 0130: romdata[15:0] = 16'h01B6; 0131: romdata[15:0] = 16'h13FC; 0132: romdata[15:0] = 16'h0003; 0133: romdata[15:0] = 16'h00BF; 0134: romdata[15:0] = 16'hE201; 0135: romdata[15:0] = 16'h13FC; 0136: romdata[15:0] = 16'h0000; 0137: romdata[15:0] = 16'h00BF; 0138: romdata[15:0] = 16'hE001; 0139: romdata[15:0] = 16'h13FC; 0140: romdata[15:0] = 16'h00FF; 0141: romdata[15:0] = 16'h00BF; 0142: romdata[15:0] = 16'hD300; 0143: romdata[15:0] = 16'h13FC; 0144: romdata[15:0] = 16'h00F7; 0145: romdata[15:0] = 16'h00BF; 0146: romdata[15:0] = 16'hD100; 0147: romdata[15:0] = 16'h0839; 0148: romdata[15:0] = 16'h0002; 0149: romdata[15:0] = 16'h00BF; 0150: romdata[15:0] = 16'hE001; 0151: romdata[15:0] = 16'h6700; 0152: romdata[15:0] = 16'hFFF6; 0153: romdata[15:0] = 16'h303C; 0154: romdata[15:0] = 16'h000C; 0155: romdata[15:0] = 16'h6100; 0156: romdata[15:0] = 16'h0124; 0157: romdata[15:0] = 16'h207C; 0158: romdata[15:0] = 16'h0000; 0159: romdata[15:0] = 16'h4000; 0160: romdata[15:0] = 16'h0C58; 0161: romdata[15:0] = 16'hAA55; 0162: romdata[15:0] = 16'h6600; 0163: romdata[15:0] = 16'h00FE; 0164: romdata[15:0] = 16'h3018; 0165: romdata[15:0] = 16'h0C40; 0166: romdata[15:0] = 16'h0001; 0167: romdata[15:0] = 16'h6600; 0168: romdata[15:0] = 16'h001C; 0169: romdata[15:0] = 16'h2018; 0170: romdata[15:0] = 16'h6100; 0171: romdata[15:0] = 16'h0106; 0172: romdata[15:0] = 16'h41F9; 0173: romdata[15:0] = 16'h0000; 0174: romdata[15:0] = 16'h4000; 0175: romdata[15:0] = 16'h6100; 0176: romdata[15:0] = 16'h01AE; 0177: romdata[15:0] = 16'h700A; 0178: romdata[15:0] = 16'h6100; 0179: romdata[15:0] = 16'h0154; 0180: romdata[15:0] = 16'h6000; 0181: romdata[15:0] = 16'h00EE; 0182: romdata[15:0] = 16'h0C40; 0183: romdata[15:0] = 16'h0002; 0184: romdata[15:0] = 16'h6600; 0185: romdata[15:0] = 16'h009E; 0186: romdata[15:0] = 16'h2858; 0187: romdata[15:0] = 16'h2A4C; 0188: romdata[15:0] = 16'h2818; 0189: romdata[15:0] = 16'h2A04; 0190: romdata[15:0] = 16'h41F9; 0191: romdata[15:0] = 16'h0000; 0192: romdata[15:0] = 16'h03F9; 0193: romdata[15:0] = 16'h6100; 0194: romdata[15:0] = 16'h018A; 0195: romdata[15:0] = 16'h200C; 0196: romdata[15:0] = 16'h6100; 0197: romdata[15:0] = 16'h00FE; 0198: romdata[15:0] = 16'h41F9; 0199: romdata[15:0] = 16'h0000; 0200: romdata[15:0] = 16'h0408; 0201: romdata[15:0] = 16'h6100; 0202: romdata[15:0] = 16'h017A; 0203: romdata[15:0] = 16'h2004; 0204: romdata[15:0] = 16'h6100; 0205: romdata[15:0] = 16'h00EE; 0206: romdata[15:0] = 16'h700A; 0207: romdata[15:0] = 16'h6100; 0208: romdata[15:0] = 16'h011A; 0209: romdata[15:0] = 16'h41F9; 0210: romdata[15:0] = 16'h0000; 0211: romdata[15:0] = 16'h0412; 0212: romdata[15:0] = 16'h6100; 0213: romdata[15:0] = 16'h0164; 0214: romdata[15:0] = 16'h0442; 0215: romdata[15:0] = 16'h0021; 0216: romdata[15:0] = 16'h96FC; 0217: romdata[15:0] = 16'h0021; 0218: romdata[15:0] = 16'h2C05; 0219: romdata[15:0] = 16'hEA8E; 0220: romdata[15:0] = 16'hBC84; 0221: romdata[15:0] = 16'h6D00; 0222: romdata[15:0] = 16'h0004; 0223: romdata[15:0] = 16'h2C04; 0224: romdata[15:0] = 16'h3006; 0225: romdata[15:0] = 16'h6100; 0226: romdata[15:0] = 16'h0098; 0227: romdata[15:0] = 16'h3006; 0228: romdata[15:0] = 16'hE448; 0229: romdata[15:0] = 16'h5340; 0230: romdata[15:0] = 16'h28D8; 0231: romdata[15:0] = 16'h51C8; 0232: romdata[15:0] = 16'hFFFC; 0233: romdata[15:0] = 16'h707F; 0234: romdata[15:0] = 16'h6100; 0235: romdata[15:0] = 16'h00E4; 0236: romdata[15:0] = 16'h0879; 0237: romdata[15:0] = 16'h0001; 0238: romdata[15:0] = 16'h00BF; 0239: romdata[15:0] = 16'hE001; 0240: romdata[15:0] = 16'h9886; 0241: romdata[15:0] = 16'h6E00; 0242: romdata[15:0] = 16'hFFD0; 0243: romdata[15:0] = 16'hBBFC; 0244: romdata[15:0] = 16'h00F8; 0245: romdata[15:0] = 16'h0000; 0246: romdata[15:0] = 16'h6600; 0247: romdata[15:0] = 16'h0018; 0248: romdata[15:0] = 16'h0C85; 0249: romdata[15:0] = 16'h0004; 0250: romdata[15:0] = 16'h0000; 0251: romdata[15:0] = 16'h6600; 0252: romdata[15:0] = 16'h000E; 0253: romdata[15:0] = 16'h284D; 0254: romdata[15:0] = 16'hD9C5; 0255: romdata[15:0] = 16'h7AFF; 0256: romdata[15:0] = 16'h28DD; 0257: romdata[15:0] = 16'h51CD; 0258: romdata[15:0] = 16'hFFFC; 0259: romdata[15:0] = 16'h700A; 0260: romdata[15:0] = 16'h6100; 0261: romdata[15:0] = 16'h00B0; 0262: romdata[15:0] = 16'h6000; 0263: romdata[15:0] = 16'h004A; 0264: romdata[15:0] = 16'h0C40; 0265: romdata[15:0] = 16'h0003; 0266: romdata[15:0] = 16'h6600; 0267: romdata[15:0] = 16'h0012; 0268: romdata[15:0] = 16'h08F9; 0269: romdata[15:0] = 16'h0001; 0270: romdata[15:0] = 16'h00BF; 0271: romdata[15:0] = 16'hE001; 0272: romdata[15:0] = 16'h4A39; 0273: romdata[15:0] = 16'h00BF; 0274: romdata[15:0] = 16'hC000; 0275: romdata[15:0] = 16'h60FE; 0276: romdata[15:0] = 16'h3E00; 0277: romdata[15:0] = 16'h3D7C; 0278: romdata[15:0] = 16'h0F00; 0279: romdata[15:0] = 16'h0180; 0280: romdata[15:0] = 16'h41F9; 0281: romdata[15:0] = 16'h0000; 0282: romdata[15:0] = 16'h0451; 0283: romdata[15:0] = 16'h6100; 0284: romdata[15:0] = 16'h00D6; 0285: romdata[15:0] = 16'h3007; 0286: romdata[15:0] = 16'h6100; 0287: romdata[15:0] = 16'h0054; 0288: romdata[15:0] = 16'h6000; 0289: romdata[15:0] = 16'hFFFE; 0290: romdata[15:0] = 16'h3D7C; 0291: romdata[15:0] = 16'h0F00; 0292: romdata[15:0] = 16'h0180; 0293: romdata[15:0] = 16'h41F9; 0294: romdata[15:0] = 16'h0000; 0295: romdata[15:0] = 16'h0435; 0296: romdata[15:0] = 16'h6100; 0297: romdata[15:0] = 16'h00BC; 0298: romdata[15:0] = 16'h6000; 0299: romdata[15:0] = 16'hFFEA; 0300: romdata[15:0] = 16'h6000; 0301: romdata[15:0] = 16'hFED8; 0302: romdata[15:0] = 16'h3D7C;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -