Update banner: 51-char separators, version field v0.1.0, add bump_version.py
This commit is contained in:
61
bump_version.py
Normal file
61
bump_version.py
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""Increment the PATCH component of version.txt and update banner_char in top.v."""
|
||||||
|
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
VERSION_FILE = Path("version.txt")
|
||||||
|
TOP_V_FILE = Path("top.v")
|
||||||
|
|
||||||
|
# Fixed 9-character field in banner_char; indices 343-351.
|
||||||
|
VERSION_FIELD_LEN = 9
|
||||||
|
VERSION_START_IDX = 343
|
||||||
|
|
||||||
|
|
||||||
|
def read_version():
|
||||||
|
if not VERSION_FILE.exists():
|
||||||
|
sys.exit(f"Error: {VERSION_FILE} not found")
|
||||||
|
return VERSION_FILE.read_text().strip()
|
||||||
|
|
||||||
|
|
||||||
|
def bump_patch(version):
|
||||||
|
parts = version.split(".")
|
||||||
|
if len(parts) != 3 or not all(p.isdigit() for p in parts):
|
||||||
|
sys.exit(f"Error: unexpected version format '{version}'")
|
||||||
|
major, minor, patch = int(parts[0]), int(parts[1]), int(parts[2])
|
||||||
|
return f"{major}.{minor}.{patch + 1}"
|
||||||
|
|
||||||
|
|
||||||
|
def update_top_v(new_version):
|
||||||
|
if not TOP_V_FILE.exists():
|
||||||
|
sys.exit(f"Error: {TOP_V_FILE} not found")
|
||||||
|
|
||||||
|
padded = new_version.ljust(VERSION_FIELD_LEN)
|
||||||
|
if len(padded) > VERSION_FIELD_LEN:
|
||||||
|
sys.exit(f"Error: version '{new_version}' exceeds {VERSION_FIELD_LEN} characters")
|
||||||
|
|
||||||
|
content = TOP_V_FILE.read_text()
|
||||||
|
|
||||||
|
for offset, ch in enumerate(padded):
|
||||||
|
idx = VERSION_START_IDX + offset
|
||||||
|
pattern = rf"(9'd{idx}:\s+banner_char\s*=\s*)[^\n]+;"
|
||||||
|
replacement = rf'\g<1>"{ch}";'
|
||||||
|
new_content = re.sub(pattern, replacement, content)
|
||||||
|
if new_content == content:
|
||||||
|
sys.exit(f"Error: could not find banner_char entry for index {idx} in {TOP_V_FILE}")
|
||||||
|
content = new_content
|
||||||
|
|
||||||
|
TOP_V_FILE.write_text(content)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
old_version = read_version()
|
||||||
|
new_version = bump_patch(old_version)
|
||||||
|
update_top_v(new_version)
|
||||||
|
VERSION_FILE.write_text(new_version + "\n")
|
||||||
|
print(f"Version bumped to {new_version}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
552
top.v
552
top.v
@@ -162,8 +162,8 @@ module top (
|
|||||||
F_WAIT = 3'd3,
|
F_WAIT = 3'd3,
|
||||||
F_BANNER = 3'd4;
|
F_BANNER = 3'd4;
|
||||||
|
|
||||||
// Banner: ESC[2J ESC[H ESC[33m + 2 separator lines + 6 info lines + ESC[0m
|
// Banner: ESC[2J ESC[H ESC[33m + 2x51-dash separators + info lines + ESC[0m
|
||||||
localparam [8:0] BANNER_LEN = 9'd288;
|
localparam [8:0] BANNER_LEN = 9'd411;
|
||||||
|
|
||||||
reg [2:0] fstate;
|
reg [2:0] fstate;
|
||||||
reg [8:0] idx; // byte index within message
|
reg [8:0] idx; // byte index within message
|
||||||
@@ -174,7 +174,7 @@ module top (
|
|||||||
reg [7:0] tx_byte;
|
reg [7:0] tx_byte;
|
||||||
wire tx_busy;
|
wire tx_busy;
|
||||||
|
|
||||||
// ERR layout: ESC[31m + "ERR lines=LLLL width=WWWW\n" + ESC[0m (35 bytes)
|
// ERR layout: ESC[31m + "ERR lines=LLLL width=WWWW" + ESC[0m + \r\n (36 bytes)
|
||||||
function [7:0] err_char(input [7:0] i);
|
function [7:0] err_char(input [7:0] i);
|
||||||
case (i)
|
case (i)
|
||||||
8'd0: err_char = 8'h1B;
|
8'd0: err_char = 8'h1B;
|
||||||
@@ -207,16 +207,17 @@ module top (
|
|||||||
8'd27: err_char = "0" + W1_r;
|
8'd27: err_char = "0" + W1_r;
|
||||||
8'd28: err_char = "0" + W2_r;
|
8'd28: err_char = "0" + W2_r;
|
||||||
8'd29: err_char = "0" + W3_r;
|
8'd29: err_char = "0" + W3_r;
|
||||||
8'd30: err_char = 8'h0A;
|
8'd30: err_char = 8'h1B;
|
||||||
8'd31: err_char = 8'h1B;
|
8'd31: err_char = "[";
|
||||||
8'd32: err_char = "[";
|
8'd32: err_char = "0";
|
||||||
8'd33: err_char = "0";
|
8'd33: err_char = "m";
|
||||||
8'd34: err_char = "m";
|
8'd34: err_char = 8'h0D;
|
||||||
|
8'd35: err_char = 8'h0A;
|
||||||
default: err_char = 8'h00;
|
default: err_char = 8'h00;
|
||||||
endcase
|
endcase
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
// OK layout: ESC[32m + "OK\n" + ESC[0m (12 bytes)
|
// OK layout: ESC[32m + "OK" + ESC[0m + \r\n (13 bytes)
|
||||||
function [7:0] ok_char(input [7:0] i);
|
function [7:0] ok_char(input [7:0] i);
|
||||||
case (i)
|
case (i)
|
||||||
8'd0: ok_char = 8'h1B;
|
8'd0: ok_char = 8'h1B;
|
||||||
@@ -226,20 +227,38 @@ module top (
|
|||||||
8'd4: ok_char = "m";
|
8'd4: ok_char = "m";
|
||||||
8'd5: ok_char = "O";
|
8'd5: ok_char = "O";
|
||||||
8'd6: ok_char = "K";
|
8'd6: ok_char = "K";
|
||||||
8'd7: ok_char = 8'h0A;
|
8'd7: ok_char = 8'h1B;
|
||||||
8'd8: ok_char = 8'h1B;
|
8'd8: ok_char = "[";
|
||||||
8'd9: ok_char = "[";
|
8'd9: ok_char = "0";
|
||||||
8'd10: ok_char = "0";
|
8'd10: ok_char = "m";
|
||||||
8'd11: ok_char = "m";
|
8'd11: ok_char = 8'h0D;
|
||||||
|
8'd12: ok_char = 8'h0A;
|
||||||
default: ok_char = 8'h00;
|
default: ok_char = 8'h00;
|
||||||
endcase
|
endcase
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
// Banner: ESC[2J ESC[H ESC[33m + separator + info lines + separator + ESC[0m
|
// Banner layout (411 bytes, indices 0-410):
|
||||||
// Indices 12-55 and 239-282 are '-' (handled by range check).
|
// 0-11: ESC[2J ESC[H ESC[33m
|
||||||
// Total: 288 bytes (indices 0-287).
|
// 12-62: '-'x51 63:\r 64:\n
|
||||||
|
// 65-72: "ARRIVE\r\n"
|
||||||
|
// 73-74: \r\n (blank)
|
||||||
|
// 75-112: "PARC LA FAYETTE, 6 RUE ISAAC NEWTON,\r\n"
|
||||||
|
// 113-128: "25000 BESANCON\r\n"
|
||||||
|
// 129-130: \r\n (blank)
|
||||||
|
// 131-163: "Project: LVDS Protocol Analyser\r\n"
|
||||||
|
// 164-216: "Board: DS90CF386 Interface (CI NU TEST LVDS LVCMOS)\r\n"
|
||||||
|
// 217-239: "S/N: 1000052088 Rev A\r\n"
|
||||||
|
// 240-241: \r\n (blank)
|
||||||
|
// 242-261: "Author: David Rice\r\n"
|
||||||
|
// 262-296: "Role: Senior Electronics Engineer\r\n"
|
||||||
|
// 297-326: "Email: david.rice@arrive.com\r\n"
|
||||||
|
// 327-328: \r\n (blank)
|
||||||
|
// 329-353: "Software Rev: " + 9-char version field + "\r\n"
|
||||||
|
// version chars at indices 343-351 (bump_version.py updates these)
|
||||||
|
// 354-404: '-'x51 405:\r 406:\n
|
||||||
|
// 407-410: ESC[0m
|
||||||
function [7:0] banner_char(input [8:0] i);
|
function [7:0] banner_char(input [8:0] i);
|
||||||
if ((i >= 9'd12 && i <= 9'd55) || (i >= 9'd239 && i <= 9'd282))
|
if ((i >= 9'd12 && i <= 9'd62) || (i >= 9'd354 && i <= 9'd404))
|
||||||
banner_char = "-";
|
banner_char = "-";
|
||||||
else begin
|
else begin
|
||||||
case (i)
|
case (i)
|
||||||
@@ -258,203 +277,320 @@ module top (
|
|||||||
9'd9: banner_char = "3";
|
9'd9: banner_char = "3";
|
||||||
9'd10: banner_char = "3";
|
9'd10: banner_char = "3";
|
||||||
9'd11: banner_char = "m";
|
9'd11: banner_char = "m";
|
||||||
// first separator \n
|
// first separator \r\n
|
||||||
9'd56: banner_char = 8'h0A;
|
9'd63: banner_char = 8'h0D;
|
||||||
// "Arrive LVDS Protocol Analyser\n"
|
9'd64: banner_char = 8'h0A;
|
||||||
9'd57: banner_char = "A";
|
// "ARRIVE\r\n"
|
||||||
9'd58: banner_char = "r";
|
9'd65: banner_char = "A";
|
||||||
9'd59: banner_char = "r";
|
9'd66: banner_char = "R";
|
||||||
9'd60: banner_char = "i";
|
9'd67: banner_char = "R";
|
||||||
9'd61: banner_char = "v";
|
9'd68: banner_char = "I";
|
||||||
9'd62: banner_char = "e";
|
9'd69: banner_char = "V";
|
||||||
9'd63: banner_char = " ";
|
9'd70: banner_char = "E";
|
||||||
9'd64: banner_char = "L";
|
9'd71: banner_char = 8'h0D;
|
||||||
9'd65: banner_char = "V";
|
9'd72: banner_char = 8'h0A;
|
||||||
9'd66: banner_char = "D";
|
// blank line
|
||||||
9'd67: banner_char = "S";
|
9'd73: banner_char = 8'h0D;
|
||||||
9'd68: banner_char = " ";
|
9'd74: banner_char = 8'h0A;
|
||||||
9'd69: banner_char = "P";
|
// "PARC LA FAYETTE, 6 RUE ISAAC NEWTON,\r\n"
|
||||||
9'd70: banner_char = "r";
|
9'd75: banner_char = "P";
|
||||||
9'd71: banner_char = "o";
|
9'd76: banner_char = "A";
|
||||||
9'd72: banner_char = "t";
|
9'd77: banner_char = "R";
|
||||||
9'd73: banner_char = "o";
|
9'd78: banner_char = "C";
|
||||||
9'd74: banner_char = "c";
|
9'd79: banner_char = " ";
|
||||||
9'd75: banner_char = "o";
|
9'd80: banner_char = "L";
|
||||||
9'd76: banner_char = "l";
|
9'd81: banner_char = "A";
|
||||||
9'd77: banner_char = " ";
|
9'd82: banner_char = " ";
|
||||||
9'd78: banner_char = "A";
|
9'd83: banner_char = "F";
|
||||||
9'd79: banner_char = "n";
|
9'd84: banner_char = "A";
|
||||||
9'd80: banner_char = "a";
|
9'd85: banner_char = "Y";
|
||||||
9'd81: banner_char = "l";
|
9'd86: banner_char = "E";
|
||||||
9'd82: banner_char = "y";
|
9'd87: banner_char = "T";
|
||||||
9'd83: banner_char = "s";
|
9'd88: banner_char = "T";
|
||||||
9'd84: banner_char = "e";
|
9'd89: banner_char = "E";
|
||||||
9'd85: banner_char = "r";
|
9'd90: banner_char = ",";
|
||||||
9'd86: banner_char = 8'h0A;
|
9'd91: banner_char = " ";
|
||||||
// "Board: DS90CF386 Interface S/N: 1000052088 Rev A\n"
|
9'd92: banner_char = "6";
|
||||||
9'd87: banner_char = "B";
|
|
||||||
9'd88: banner_char = "o";
|
|
||||||
9'd89: banner_char = "a";
|
|
||||||
9'd90: banner_char = "r";
|
|
||||||
9'd91: banner_char = "d";
|
|
||||||
9'd92: banner_char = ":";
|
|
||||||
9'd93: banner_char = " ";
|
9'd93: banner_char = " ";
|
||||||
9'd94: banner_char = "D";
|
9'd94: banner_char = "R";
|
||||||
9'd95: banner_char = "S";
|
9'd95: banner_char = "U";
|
||||||
9'd96: banner_char = "9";
|
9'd96: banner_char = "E";
|
||||||
9'd97: banner_char = "0";
|
9'd97: banner_char = " ";
|
||||||
9'd98: banner_char = "C";
|
9'd98: banner_char = "I";
|
||||||
9'd99: banner_char = "F";
|
9'd99: banner_char = "S";
|
||||||
9'd100: banner_char = "3";
|
9'd100: banner_char = "A";
|
||||||
9'd101: banner_char = "8";
|
9'd101: banner_char = "A";
|
||||||
9'd102: banner_char = "6";
|
9'd102: banner_char = "C";
|
||||||
9'd103: banner_char = " ";
|
9'd103: banner_char = " ";
|
||||||
9'd104: banner_char = "I";
|
9'd104: banner_char = "N";
|
||||||
9'd105: banner_char = "n";
|
9'd105: banner_char = "E";
|
||||||
9'd106: banner_char = "t";
|
9'd106: banner_char = "W";
|
||||||
9'd107: banner_char = "e";
|
9'd107: banner_char = "T";
|
||||||
9'd108: banner_char = "r";
|
9'd108: banner_char = "O";
|
||||||
9'd109: banner_char = "f";
|
9'd109: banner_char = "N";
|
||||||
9'd110: banner_char = "a";
|
9'd110: banner_char = ",";
|
||||||
9'd111: banner_char = "c";
|
9'd111: banner_char = 8'h0D;
|
||||||
9'd112: banner_char = "e";
|
9'd112: banner_char = 8'h0A;
|
||||||
9'd113: banner_char = " ";
|
// "25000 BESANCON\r\n"
|
||||||
9'd114: banner_char = " ";
|
9'd113: banner_char = "2";
|
||||||
9'd115: banner_char = "S";
|
9'd114: banner_char = "5";
|
||||||
9'd116: banner_char = "/";
|
9'd115: banner_char = "0";
|
||||||
9'd117: banner_char = "N";
|
9'd116: banner_char = "0";
|
||||||
9'd118: banner_char = ":";
|
9'd117: banner_char = "0";
|
||||||
9'd119: banner_char = " ";
|
9'd118: banner_char = " ";
|
||||||
9'd120: banner_char = "1";
|
9'd119: banner_char = "B";
|
||||||
9'd121: banner_char = "0";
|
9'd120: banner_char = "E";
|
||||||
9'd122: banner_char = "0";
|
9'd121: banner_char = "S";
|
||||||
9'd123: banner_char = "0";
|
9'd122: banner_char = "A";
|
||||||
9'd124: banner_char = "0";
|
9'd123: banner_char = "N";
|
||||||
9'd125: banner_char = "5";
|
9'd124: banner_char = "C";
|
||||||
9'd126: banner_char = "2";
|
9'd125: banner_char = "O";
|
||||||
9'd127: banner_char = "0";
|
9'd126: banner_char = "N";
|
||||||
9'd128: banner_char = "8";
|
9'd127: banner_char = 8'h0D;
|
||||||
9'd129: banner_char = "8";
|
9'd128: banner_char = 8'h0A;
|
||||||
9'd130: banner_char = " ";
|
// blank line
|
||||||
9'd131: banner_char = "R";
|
9'd129: banner_char = 8'h0D;
|
||||||
9'd132: banner_char = "e";
|
9'd130: banner_char = 8'h0A;
|
||||||
9'd133: banner_char = "v";
|
// "Project: LVDS Protocol Analyser\r\n"
|
||||||
9'd134: banner_char = " ";
|
9'd131: banner_char = "P";
|
||||||
9'd135: banner_char = "A";
|
9'd132: banner_char = "r";
|
||||||
9'd136: banner_char = 8'h0A;
|
9'd133: banner_char = "o";
|
||||||
// "Author: David Rice\n"
|
9'd134: banner_char = "j";
|
||||||
9'd137: banner_char = "A";
|
9'd135: banner_char = "e";
|
||||||
9'd138: banner_char = "u";
|
9'd136: banner_char = "c";
|
||||||
9'd139: banner_char = "t";
|
9'd137: banner_char = "t";
|
||||||
9'd140: banner_char = "h";
|
9'd138: banner_char = ":";
|
||||||
9'd141: banner_char = "o";
|
9'd139: banner_char = " ";
|
||||||
9'd142: banner_char = "r";
|
9'd140: banner_char = "L";
|
||||||
9'd143: banner_char = ":";
|
9'd141: banner_char = "V";
|
||||||
|
9'd142: banner_char = "D";
|
||||||
|
9'd143: banner_char = "S";
|
||||||
9'd144: banner_char = " ";
|
9'd144: banner_char = " ";
|
||||||
9'd145: banner_char = "D";
|
9'd145: banner_char = "P";
|
||||||
9'd146: banner_char = "a";
|
9'd146: banner_char = "r";
|
||||||
9'd147: banner_char = "v";
|
9'd147: banner_char = "o";
|
||||||
9'd148: banner_char = "i";
|
9'd148: banner_char = "t";
|
||||||
9'd149: banner_char = "d";
|
9'd149: banner_char = "o";
|
||||||
9'd150: banner_char = " ";
|
9'd150: banner_char = "c";
|
||||||
9'd151: banner_char = "R";
|
9'd151: banner_char = "o";
|
||||||
9'd152: banner_char = "i";
|
9'd152: banner_char = "l";
|
||||||
9'd153: banner_char = "c";
|
9'd153: banner_char = " ";
|
||||||
9'd154: banner_char = "e";
|
9'd154: banner_char = "A";
|
||||||
9'd155: banner_char = 8'h0A;
|
9'd155: banner_char = "n";
|
||||||
// "Role: Senior Electronics Engineer\n"
|
9'd156: banner_char = "a";
|
||||||
9'd156: banner_char = "R";
|
9'd157: banner_char = "l";
|
||||||
9'd157: banner_char = "o";
|
9'd158: banner_char = "y";
|
||||||
9'd158: banner_char = "l";
|
9'd159: banner_char = "s";
|
||||||
9'd159: banner_char = "e";
|
9'd160: banner_char = "e";
|
||||||
9'd160: banner_char = ":";
|
9'd161: banner_char = "r";
|
||||||
9'd161: banner_char = " ";
|
9'd162: banner_char = 8'h0D;
|
||||||
9'd162: banner_char = "S";
|
9'd163: banner_char = 8'h0A;
|
||||||
9'd163: banner_char = "e";
|
// "Board: DS90CF386 Interface (CI NU TEST LVDS LVCMOS)\r\n"
|
||||||
9'd164: banner_char = "n";
|
9'd164: banner_char = "B";
|
||||||
9'd165: banner_char = "i";
|
9'd165: banner_char = "o";
|
||||||
9'd166: banner_char = "o";
|
9'd166: banner_char = "a";
|
||||||
9'd167: banner_char = "r";
|
9'd167: banner_char = "r";
|
||||||
9'd168: banner_char = " ";
|
9'd168: banner_char = "d";
|
||||||
9'd169: banner_char = "E";
|
9'd169: banner_char = ":";
|
||||||
9'd170: banner_char = "l";
|
9'd170: banner_char = " ";
|
||||||
9'd171: banner_char = "e";
|
9'd171: banner_char = "D";
|
||||||
9'd172: banner_char = "c";
|
9'd172: banner_char = "S";
|
||||||
9'd173: banner_char = "t";
|
9'd173: banner_char = "9";
|
||||||
9'd174: banner_char = "r";
|
9'd174: banner_char = "0";
|
||||||
9'd175: banner_char = "o";
|
9'd175: banner_char = "C";
|
||||||
9'd176: banner_char = "n";
|
9'd176: banner_char = "F";
|
||||||
9'd177: banner_char = "i";
|
9'd177: banner_char = "3";
|
||||||
9'd178: banner_char = "c";
|
9'd178: banner_char = "8";
|
||||||
9'd179: banner_char = "s";
|
9'd179: banner_char = "6";
|
||||||
9'd180: banner_char = " ";
|
9'd180: banner_char = " ";
|
||||||
9'd181: banner_char = "E";
|
9'd181: banner_char = "I";
|
||||||
9'd182: banner_char = "n";
|
9'd182: banner_char = "n";
|
||||||
9'd183: banner_char = "g";
|
9'd183: banner_char = "t";
|
||||||
9'd184: banner_char = "i";
|
9'd184: banner_char = "e";
|
||||||
9'd185: banner_char = "n";
|
9'd185: banner_char = "r";
|
||||||
9'd186: banner_char = "e";
|
9'd186: banner_char = "f";
|
||||||
9'd187: banner_char = "e";
|
9'd187: banner_char = "a";
|
||||||
9'd188: banner_char = "r";
|
9'd188: banner_char = "c";
|
||||||
9'd189: banner_char = 8'h0A;
|
9'd189: banner_char = "e";
|
||||||
// "Email: david.rice@arrive.com\n"
|
9'd190: banner_char = " ";
|
||||||
9'd190: banner_char = "E";
|
9'd191: banner_char = "(";
|
||||||
9'd191: banner_char = "m";
|
9'd192: banner_char = "C";
|
||||||
9'd192: banner_char = "a";
|
9'd193: banner_char = "I";
|
||||||
9'd193: banner_char = "i";
|
9'd194: banner_char = " ";
|
||||||
9'd194: banner_char = "l";
|
9'd195: banner_char = "N";
|
||||||
9'd195: banner_char = ":";
|
9'd196: banner_char = "U";
|
||||||
9'd196: banner_char = " ";
|
9'd197: banner_char = " ";
|
||||||
9'd197: banner_char = "d";
|
9'd198: banner_char = "T";
|
||||||
9'd198: banner_char = "a";
|
9'd199: banner_char = "E";
|
||||||
9'd199: banner_char = "v";
|
9'd200: banner_char = "S";
|
||||||
9'd200: banner_char = "i";
|
9'd201: banner_char = "T";
|
||||||
9'd201: banner_char = "d";
|
9'd202: banner_char = " ";
|
||||||
9'd202: banner_char = ".";
|
9'd203: banner_char = "L";
|
||||||
9'd203: banner_char = "r";
|
9'd204: banner_char = "V";
|
||||||
9'd204: banner_char = "i";
|
9'd205: banner_char = "D";
|
||||||
9'd205: banner_char = "c";
|
9'd206: banner_char = "S";
|
||||||
9'd206: banner_char = "e";
|
9'd207: banner_char = " ";
|
||||||
9'd207: banner_char = "@";
|
9'd208: banner_char = "L";
|
||||||
9'd208: banner_char = "a";
|
9'd209: banner_char = "V";
|
||||||
9'd209: banner_char = "r";
|
9'd210: banner_char = "C";
|
||||||
9'd210: banner_char = "r";
|
9'd211: banner_char = "M";
|
||||||
9'd211: banner_char = "i";
|
9'd212: banner_char = "O";
|
||||||
9'd212: banner_char = "v";
|
9'd213: banner_char = "S";
|
||||||
9'd213: banner_char = "e";
|
9'd214: banner_char = ")";
|
||||||
9'd214: banner_char = ".";
|
9'd215: banner_char = 8'h0D;
|
||||||
9'd215: banner_char = "c";
|
9'd216: banner_char = 8'h0A;
|
||||||
9'd216: banner_char = "o";
|
// "S/N: 1000052088 Rev A\r\n"
|
||||||
9'd217: banner_char = "m";
|
9'd217: banner_char = "S";
|
||||||
9'd218: banner_char = 8'h0A;
|
9'd218: banner_char = "/";
|
||||||
// "Software Rev: 1.0.0\n"
|
9'd219: banner_char = "N";
|
||||||
9'd219: banner_char = "S";
|
9'd220: banner_char = ":";
|
||||||
9'd220: banner_char = "o";
|
9'd221: banner_char = " ";
|
||||||
9'd221: banner_char = "f";
|
9'd222: banner_char = "1";
|
||||||
9'd222: banner_char = "t";
|
9'd223: banner_char = "0";
|
||||||
9'd223: banner_char = "w";
|
9'd224: banner_char = "0";
|
||||||
9'd224: banner_char = "a";
|
9'd225: banner_char = "0";
|
||||||
9'd225: banner_char = "r";
|
9'd226: banner_char = "0";
|
||||||
9'd226: banner_char = "e";
|
9'd227: banner_char = "5";
|
||||||
9'd227: banner_char = " ";
|
9'd228: banner_char = "2";
|
||||||
9'd228: banner_char = "R";
|
9'd229: banner_char = "0";
|
||||||
9'd229: banner_char = "e";
|
9'd230: banner_char = "8";
|
||||||
9'd230: banner_char = "v";
|
9'd231: banner_char = "8";
|
||||||
9'd231: banner_char = ":";
|
|
||||||
9'd232: banner_char = " ";
|
9'd232: banner_char = " ";
|
||||||
9'd233: banner_char = "1";
|
9'd233: banner_char = "R";
|
||||||
9'd234: banner_char = ".";
|
9'd234: banner_char = "e";
|
||||||
9'd235: banner_char = "0";
|
9'd235: banner_char = "v";
|
||||||
9'd236: banner_char = ".";
|
9'd236: banner_char = " ";
|
||||||
9'd237: banner_char = "0";
|
9'd237: banner_char = "A";
|
||||||
9'd238: banner_char = 8'h0A;
|
9'd238: banner_char = 8'h0D;
|
||||||
// second separator \n
|
9'd239: banner_char = 8'h0A;
|
||||||
9'd283: banner_char = 8'h0A;
|
// blank line
|
||||||
|
9'd240: banner_char = 8'h0D;
|
||||||
|
9'd241: banner_char = 8'h0A;
|
||||||
|
// "Author: David Rice\r\n"
|
||||||
|
9'd242: banner_char = "A";
|
||||||
|
9'd243: banner_char = "u";
|
||||||
|
9'd244: banner_char = "t";
|
||||||
|
9'd245: banner_char = "h";
|
||||||
|
9'd246: banner_char = "o";
|
||||||
|
9'd247: banner_char = "r";
|
||||||
|
9'd248: banner_char = ":";
|
||||||
|
9'd249: banner_char = " ";
|
||||||
|
9'd250: banner_char = "D";
|
||||||
|
9'd251: banner_char = "a";
|
||||||
|
9'd252: banner_char = "v";
|
||||||
|
9'd253: banner_char = "i";
|
||||||
|
9'd254: banner_char = "d";
|
||||||
|
9'd255: banner_char = " ";
|
||||||
|
9'd256: banner_char = "R";
|
||||||
|
9'd257: banner_char = "i";
|
||||||
|
9'd258: banner_char = "c";
|
||||||
|
9'd259: banner_char = "e";
|
||||||
|
9'd260: banner_char = 8'h0D;
|
||||||
|
9'd261: banner_char = 8'h0A;
|
||||||
|
// "Role: Senior Electronics Engineer\r\n"
|
||||||
|
9'd262: banner_char = "R";
|
||||||
|
9'd263: banner_char = "o";
|
||||||
|
9'd264: banner_char = "l";
|
||||||
|
9'd265: banner_char = "e";
|
||||||
|
9'd266: banner_char = ":";
|
||||||
|
9'd267: banner_char = " ";
|
||||||
|
9'd268: banner_char = "S";
|
||||||
|
9'd269: banner_char = "e";
|
||||||
|
9'd270: banner_char = "n";
|
||||||
|
9'd271: banner_char = "i";
|
||||||
|
9'd272: banner_char = "o";
|
||||||
|
9'd273: banner_char = "r";
|
||||||
|
9'd274: banner_char = " ";
|
||||||
|
9'd275: banner_char = "E";
|
||||||
|
9'd276: banner_char = "l";
|
||||||
|
9'd277: banner_char = "e";
|
||||||
|
9'd278: banner_char = "c";
|
||||||
|
9'd279: banner_char = "t";
|
||||||
|
9'd280: banner_char = "r";
|
||||||
|
9'd281: banner_char = "o";
|
||||||
|
9'd282: banner_char = "n";
|
||||||
|
9'd283: banner_char = "i";
|
||||||
|
9'd284: banner_char = "c";
|
||||||
|
9'd285: banner_char = "s";
|
||||||
|
9'd286: banner_char = " ";
|
||||||
|
9'd287: banner_char = "E";
|
||||||
|
9'd288: banner_char = "n";
|
||||||
|
9'd289: banner_char = "g";
|
||||||
|
9'd290: banner_char = "i";
|
||||||
|
9'd291: banner_char = "n";
|
||||||
|
9'd292: banner_char = "e";
|
||||||
|
9'd293: banner_char = "e";
|
||||||
|
9'd294: banner_char = "r";
|
||||||
|
9'd295: banner_char = 8'h0D;
|
||||||
|
9'd296: banner_char = 8'h0A;
|
||||||
|
// "Email: david.rice@arrive.com\r\n"
|
||||||
|
9'd297: banner_char = "E";
|
||||||
|
9'd298: banner_char = "m";
|
||||||
|
9'd299: banner_char = "a";
|
||||||
|
9'd300: banner_char = "i";
|
||||||
|
9'd301: banner_char = "l";
|
||||||
|
9'd302: banner_char = ":";
|
||||||
|
9'd303: banner_char = " ";
|
||||||
|
9'd304: banner_char = "d";
|
||||||
|
9'd305: banner_char = "a";
|
||||||
|
9'd306: banner_char = "v";
|
||||||
|
9'd307: banner_char = "i";
|
||||||
|
9'd308: banner_char = "d";
|
||||||
|
9'd309: banner_char = ".";
|
||||||
|
9'd310: banner_char = "r";
|
||||||
|
9'd311: banner_char = "i";
|
||||||
|
9'd312: banner_char = "c";
|
||||||
|
9'd313: banner_char = "e";
|
||||||
|
9'd314: banner_char = "@";
|
||||||
|
9'd315: banner_char = "a";
|
||||||
|
9'd316: banner_char = "r";
|
||||||
|
9'd317: banner_char = "r";
|
||||||
|
9'd318: banner_char = "i";
|
||||||
|
9'd319: banner_char = "v";
|
||||||
|
9'd320: banner_char = "e";
|
||||||
|
9'd321: banner_char = ".";
|
||||||
|
9'd322: banner_char = "c";
|
||||||
|
9'd323: banner_char = "o";
|
||||||
|
9'd324: banner_char = "m";
|
||||||
|
9'd325: banner_char = 8'h0D;
|
||||||
|
9'd326: banner_char = 8'h0A;
|
||||||
|
// blank line
|
||||||
|
9'd327: banner_char = 8'h0D;
|
||||||
|
9'd328: banner_char = 8'h0A;
|
||||||
|
// "Software Rev: " + 9-char version field (indices 343-351) + "\r\n"
|
||||||
|
9'd329: banner_char = "S";
|
||||||
|
9'd330: banner_char = "o";
|
||||||
|
9'd331: banner_char = "f";
|
||||||
|
9'd332: banner_char = "t";
|
||||||
|
9'd333: banner_char = "w";
|
||||||
|
9'd334: banner_char = "a";
|
||||||
|
9'd335: banner_char = "r";
|
||||||
|
9'd336: banner_char = "e";
|
||||||
|
9'd337: banner_char = " ";
|
||||||
|
9'd338: banner_char = "R";
|
||||||
|
9'd339: banner_char = "e";
|
||||||
|
9'd340: banner_char = "v";
|
||||||
|
9'd341: banner_char = ":";
|
||||||
|
9'd342: banner_char = " ";
|
||||||
|
9'd343: banner_char = "0";
|
||||||
|
9'd344: banner_char = ".";
|
||||||
|
9'd345: banner_char = "1";
|
||||||
|
9'd346: banner_char = ".";
|
||||||
|
9'd347: banner_char = "0";
|
||||||
|
9'd348: banner_char = " ";
|
||||||
|
9'd349: banner_char = " ";
|
||||||
|
9'd350: banner_char = " ";
|
||||||
|
9'd351: banner_char = " ";
|
||||||
|
9'd352: banner_char = 8'h0D;
|
||||||
|
9'd353: banner_char = 8'h0A;
|
||||||
|
// second separator \r\n
|
||||||
|
9'd405: banner_char = 8'h0D;
|
||||||
|
9'd406: banner_char = 8'h0A;
|
||||||
// ESC[0m
|
// ESC[0m
|
||||||
9'd284: banner_char = 8'h1B;
|
9'd407: banner_char = 8'h1B;
|
||||||
9'd285: banner_char = "[";
|
9'd408: banner_char = "[";
|
||||||
9'd286: banner_char = "0";
|
9'd409: banner_char = "0";
|
||||||
9'd287: banner_char = "m";
|
9'd410: banner_char = "m";
|
||||||
default: banner_char = 8'h00;
|
default: banner_char = 8'h00;
|
||||||
endcase
|
endcase
|
||||||
end
|
end
|
||||||
@@ -493,7 +629,7 @@ module top (
|
|||||||
if (req_edge_q && (anomaly_u || heartbeat_u)) begin
|
if (req_edge_q && (anomaly_u || heartbeat_u)) begin
|
||||||
idx <= 9'd0;
|
idx <= 9'd0;
|
||||||
is_err_msg <= anomaly_u;
|
is_err_msg <= anomaly_u;
|
||||||
msg_len <= anomaly_u ? 9'd35 : 9'd12;
|
msg_len <= anomaly_u ? 9'd36 : 9'd13;
|
||||||
l_rem <= lines_u;
|
l_rem <= lines_u;
|
||||||
w_rem <= width_u;
|
w_rem <= width_u;
|
||||||
conv_step <= 2'd0;
|
conv_step <= 2'd0;
|
||||||
|
|||||||
1
version.txt
Normal file
1
version.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
0.1.0
|
||||||
Reference in New Issue
Block a user