URL
https://opencores.org/ocsvn/zet86/zet86/trunk
Subversion Repositories zet86
Compare Revisions
- This comparison shows the changes necessary to convert path
/
- from Rev 44 to Rev 45
- ↔ Reverse comparison
Rev 44 → Rev 45
/trunk/rtl-model/defines.v
23,4 → 23,5
`define ADD_IP `IR_SIZE'bx__0__1__0__1__10_001_001__0__01__0__0_1111_xxxx_xxxx_1111_xx |
`define OP_NOP 8'h90 |
|
`define DEBUG 1 |
`define DEBUG 1 |
//`define DEBUG_TRACE 1 |
/trunk/rtl-model/regfile.v
22,8 → 22,11
|
module regfile ( |
`ifdef DEBUG |
output [15:0] r1, |
output [15:0] r2, |
output [15:0] ax, |
output [15:0] dx, |
output [15:0] bp, |
output [15:0] si, |
output [15:0] es, |
`endif |
|
output [15:0] a, |
61,8 → 64,11
|
// Assignments |
`ifdef DEBUG |
assign r1 = r[1]; |
assign r2 = r[7]; |
assign ax = r[0]; |
assign dx = r[2]; |
assign bp = r[5]; |
assign si = r[6]; |
assign es = r[8]; |
`endif |
assign a = (a_byte & ~addr_a[3]) ? { {8{a8[7]}}, a8} : r[addr_a]; |
assign a8 = addr_a[2] ? r[addr_a[1:0]][15:8] : r[addr_a][7:0]; |
/trunk/rtl-model/exec.v
26,8 → 26,16
output [15:0] x, |
output [15:0] y, |
output [15:0] aluo, |
output [15:0] r1, |
output [15:0] r2, |
output [15:0] ax, |
output [15:0] dx, |
output [15:0] bp, |
output [15:0] si, |
output [15:0] es, |
output [15:0] c, |
output [ 3:0] addr_c, |
output [15:0] omemalu, |
output [ 3:0] addr_d, |
output [ 8:0] flags, |
`endif |
input [`IR_SIZE-1:0] ir, |
input [15:0] off, |
54,9 → 62,16
); |
|
// Net declarations |
wire [15:0] a, b, c, s, alu_iflags, omemalu, bus_b; |
`ifndef DEBUG |
wire [15:0] c; |
wire [15:0] omemalu; |
wire [ 3:0] addr_c; |
wire [ 3:0] addr_d; |
wire [8:0] flags; |
`endif |
wire [15:0] a, b, s, alu_iflags, bus_b; |
wire [31:0] aluout; |
wire [3:0] addr_a, addr_b, addr_c, addr_d; |
wire [3:0] addr_a, addr_b; |
wire [2:0] t, func; |
wire [1:0] addr_s; |
wire wrfl, high, memalu, r_byte, c_byte; |
64,7 → 79,7
wire wr_cnd; |
wire jmp; |
wire b_imm; |
wire [8:0] flags, iflags, oflags; |
wire [8:0] iflags, oflags; |
wire [4:0] logic_flags; |
wire alu_word; |
wire a_byte; |
77,7 → 92,7
alu_word, s, off, clk, dive); |
regfile reg0 ( |
`ifdef DEBUG |
r1, r2, |
ax, dx, bp, si, es, |
`endif |
a, b, c, cs, ip, {aluout[31:16], omemalu}, s, flags, wr_reg, wrfl, |
wr_high, clk, rst, addr_a, addr_b, addr_c, addr_d, addr_s, iflags, |
/trunk/rtl-model/cpu.v
31,8 → 31,22
output [15:0] y, |
output [15:0] imm, |
output [15:0] aluo, |
output [15:0] r1, |
output [15:0] r2, |
output [15:0] ax, |
output [15:0] dx, |
output [15:0] bp, |
output [15:0] si, |
output [15:0] es, |
input dbg_block, |
output [15:0] c, |
output [ 3:0] addr_c, |
output [15:0] cpu_dat_o, |
output [15:0] d, |
output [ 3:0] addr_d, |
output byte_exec, |
output [ 8:0] flags, |
output end_seq, |
output ext_int, |
output cpu_block, |
`endif |
|
// Wishbone master interface |
55,12 → 69,15
`ifndef DEBUG |
wire [15:0] cs, ip; |
wire [15:0] imm; |
wire [15:0] cpu_dat_o; |
wire byte_exec; |
wire cpu_block; |
`endif |
wire [`IR_SIZE-1:0] ir; |
wire [15:0] off; |
|
wire [19:0] addr_exec, addr_fetch; |
wire byte_fetch, byte_exec, fetch_or_exec; |
wire byte_fetch, fetch_or_exec; |
wire of, zf, cx_zero; |
wire div_exc; |
wire wr_ip0; |
69,9 → 86,8
wire cpu_byte_o; |
wire cpu_m_io; |
wire [19:0] cpu_adr_o; |
wire cpu_block; |
wire wb_block; |
wire [15:0] cpu_dat_i; |
wire [15:0] cpu_dat_o; |
wire cpu_we_o; |
wire [15:0] iid_dat_i; |
|
80,6 → 96,8
`ifdef DEBUG |
.state (state), |
.next_state (next_state), |
.ext_int (ext_int), |
.end_seq (end_seq), |
`endif |
.clk (wb_clk_i), |
.rst (wb_rst_i), |
101,7 → 119,8
|
.wr_ip0 (wr_ip0), |
|
.intr (wb_tgc_i & ifl), |
.intr (wb_tgc_i), |
.ifl (ifl), |
.inta (wb_tgc_o) |
); |
|
110,8 → 129,16
.x (x), |
.y (y), |
.aluo (aluo), |
.r1 (r1), |
.r2 (r2), |
.ax (ax), |
.dx (dx), |
.bp (bp), |
.si (si), |
.es (es), |
.c (c), |
.addr_c (addr_c), |
.omemalu (d), |
.addr_d (addr_d), |
.flags (flags), |
`endif |
.ir (ir), |
.off (off), |
141,7 → 168,7
.cpu_memop (ir[`MEM_OP]), |
.cpu_m_io (cpu_m_io), |
.cpu_adr_o (cpu_adr_o), |
.cpu_block (cpu_block), |
.cpu_block (wb_block), |
.cpu_dat_i (cpu_dat_i), |
.cpu_dat_o (cpu_dat_o), |
.cpu_we_o (cpu_we_o), |
166,6 → 193,9
|
`ifdef DEBUG |
assign iralu = ir[28:23]; |
assign cpu_block = wb_block | dbg_block; |
`else |
assign cpu_block = wb_block; |
`endif |
endmodule |
|
/trunk/rtl-model/fetch.v
24,6 → 24,8
`ifdef DEBUG |
output reg [2:0] state, |
output [2:0] next_state, |
output ext_int, |
output end_seq, |
`endif |
input clk, |
input rst, |
43,6 → 45,7
input div_exc, |
output wr_ip0, |
input intr, |
input ifl, |
output inta |
); |
|
54,13 → 57,15
parameter execu_st = 3'h4; |
|
`ifndef DEBUG |
reg [2:0] state; |
wire [2:0] next_state; |
reg [2:0] state; |
wire end_seq; |
wire ext_int; |
`endif |
|
wire [`IR_SIZE-1:0] rom_ir; |
wire [7:0] opcode, modrm; |
wire exec_st, end_seq; |
wire exec_st; |
wire [15:0] imm_d; |
wire prefix, repz_pr, sovr_pr; |
wire next_in_opco, next_in_exec; |
70,17 → 75,17
reg [15:0] off_l, imm_l; |
reg [1:0] pref_l; |
reg [2:0] sop_l; |
wire ext_int; |
|
// Module instantiation |
decode decode0(opcode, modrm, off_l, imm_l, pref_l[1], clk, rst, block, |
exec_st, div_exc, need_modrm, need_off, need_imm, off_size, |
imm_size, rom_ir, off, imm_d, end_seq, sop_l, intr, inta, ext_int, pref_l[1]); |
imm_size, rom_ir, off, imm_d, end_seq, sop_l, intr, ifl, |
inta, ext_int, pref_l[1]); |
next_or_not nn0(pref_l, opcode[7:1], cx_zero, zf, ext_int, next_in_opco, |
next_in_exec); |
nstate ns0(state, prefix, need_modrm, need_off, need_imm, end_seq, |
rom_ir[28:23], of, next_in_opco, next_in_exec, block, div_exc, |
intr, next_state); |
intr, ifl, next_state); |
|
// Assignments |
assign pc = (cs << 4) + ip; |
178,6 → 183,7
input block, |
input div_exc, |
input intr, |
input ifl, |
output [2:0] next_state |
); |
|
189,12 → 195,13
parameter execu_st = 3'h4; |
wire into, end_instr, end_into; |
wire [2:0] n_state; |
wire ext_int; |
wire intr_ifl; |
|
// Assignments |
assign into = (ftype==6'b111_010); |
assign end_into = into ? ~of : end_seq; |
assign end_instr = !div_exc && !intr && end_into && !next_in_exec; |
assign end_instr = !div_exc && !intr_ifl && end_into && !next_in_exec; |
assign intr_ifl = intr & ifl; |
|
assign n_state = (state == opcod_st) ? (prefix ? opcod_st |
: (next_in_opco ? opcod_st |
263,6 → 270,7
input [2:0] sop_l, |
|
input intr, |
input ifl, |
output reg inta, |
output reg ext_int, |
input repz_pr |
305,7 → 313,7
always @(posedge clk) |
if (rst) ext_int <= 1'b0; |
else ext_int <= block ? ext_int |
: ((intr && exec_st && end_seq) ? 1'b1 |
: ((intr & ifl & exec_st & end_seq) ? 1'b1 |
: (ext_int ? !end_seq : 1'b0)); |
|
// inta |
339,7 → 347,6
wire [1:0] mod; |
wire [2:0] regm; |
wire [2:0] rm; |
wire sw; |
wire d, b, sm, dm; |
wire off_size_mod, need_off_mod; |
wire [2:0] srcm, dstm; |
360,13 → 367,12
assign b = ~op[0]; |
assign off_size_mod = (base == 4'b1100 && index == 4'b1100) ? 1'b1 : mod[1]; |
assign need_off_mod = (base == 4'b1100 && index == 4'b1100) || ^mod; |
assign sw = op[0] ~^ op[1]; |
assign off_size_from_mod = !op[7] | (!op[5] & !op[4]) | (op[6] & op[4]); |
assign off_size = !off_size_from_mod | off_size_mod; |
|
// Behaviour |
always @(op or dm or b or need_off_mod or srcm or sm or dstm |
or mod or rm or regm or rep or sw or modrm) |
or mod or rm or regm or rep or modrm) |
casex (op) |
8'b0000_000x: // add r->r, r->m |
begin |
791,7 → 797,7
need_modrm <= 1'b1; |
need_off <= need_off_mod; |
need_imm <= 1'b1; |
imm_size <= !sw; |
imm_size <= !op[1] & op[0]; |
dst <= { 1'b0, modrm[2:0] }; |
src <= 4'b0; |
end |
/trunk/impl/virtex4-ml403ep/test/base.cpj
1,6 → 1,6
#ChipScope Pro Analyzer Project File, Version 3.0 |
#Fri Nov 07 17:28:21 GMT+01:00 2008 |
device.2.configFileDir=/home/zeus/zet/impl/virtex4-ml403ep/ise-kotku |
#Sat Feb 28 19:48:19 GMT+01:00 2009 |
device.2.configFileDir=/home/zeus/tmp |
device.2.configFilename=kotku_ml403.bit |
deviceChain.deviceName0=System_ACE_CF |
deviceChain.deviceName1=XCF32P |
15,8 → 15,8
deviceChain.name2=MyDevice2 |
deviceChain.name3=MyDevice3 |
deviceIds=0a001093f505909321e5809359608093 |
mdiAreaHeight=0.7047872340425532 |
mdiAreaHeightLast=0.8218085106382979 |
mdiAreaHeight=0.7659574468085106 |
mdiAreaHeightLast=0.7659574468085106 |
mdiCount=2 |
mdiDevice0=2 |
mdiDevice1=2 |
25,24 → 25,24
mdiUnit0=0 |
mdiUnit1=0 |
navigatorHeight=0.4295212765957447 |
navigatorHeightLast=0.16356382978723405 |
navigatorWidth=0.14155629139072848 |
navigatorWidthLast=0.271523178807947 |
navigatorHeightLast=0.1595744680851064 |
navigatorWidth=0.09765625 |
navigatorWidthLast=0.1515625 |
unit.-1.-1.username= |
unit.1.-1.username= |
unit.2.-1.username= |
unit.2.0.0.HEIGHT0=0.83111954 |
unit.2.0.0.HEIGHT0=0.91797554 |
unit.2.0.0.TriggerRow0=1 |
unit.2.0.0.TriggerRow1=1 |
unit.2.0.0.TriggerRow2=1 |
unit.2.0.0.WIDTH0=0.64630544 |
unit.2.0.0.X0=0.10640394 |
unit.2.0.0.Y0=0.032258064 |
unit.2.0.0.WIDTH0=0.8658429 |
unit.2.0.0.X0=0.0 |
unit.2.0.0.Y0=0.0 |
unit.2.0.1.HEIGHT1=1.0 |
unit.2.0.1.WIDTH1=1.0 |
unit.2.0.1.X1=0.0 |
unit.2.0.1.Y1=0.0 |
unit.2.0.MFBitsA0=XXXXXXXXXXXXXXXXXXXX |
unit.2.0.MFBitsA0=00110101110111001000 |
unit.2.0.MFBitsA1=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX |
unit.2.0.MFBitsA10=XXXXXXXXXXXXXXXXXXXXX |
unit.2.0.MFBitsA11=XXXXXXXXXXXXXXXX |
49,12 → 49,12
unit.2.0.MFBitsA12=XXXXXXXXX |
unit.2.0.MFBitsA13=XXX |
unit.2.0.MFBitsA14=XXXXX |
unit.2.0.MFBitsA15=10111111100000001000000000000000 |
unit.2.0.MFBitsA2=11000010100011100100 |
unit.2.0.MFBitsA3=XXXXXX |
unit.2.0.MFBitsA15=01001011111111111001100110000000 |
unit.2.0.MFBitsA2=00110101110111001000 |
unit.2.0.MFBitsA3=X1XX1X |
unit.2.0.MFBitsA4=XXXXXX |
unit.2.0.MFBitsA5=XXXXXX |
unit.2.0.MFBitsA6=XXXXXXXXXXXXXXXX |
unit.2.0.MFBitsA5=XXX000 |
unit.2.0.MFBitsA6=XXXXXXXXXXX1XXXX |
unit.2.0.MFBitsA7=XXXXXXXXXXXXXXXX |
unit.2.0.MFBitsA8=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX |
unit.2.0.MFBitsA9=XXXXXXXXXXXXXXXX |
81,7 → 81,7
unit.2.0.MFCompareA12=0 |
unit.2.0.MFCompareA13=0 |
unit.2.0.MFCompareA14=0 |
unit.2.0.MFCompareA15=0 |
unit.2.0.MFCompareA15=2 |
unit.2.0.MFCompareA2=0 |
unit.2.0.MFCompareA3=0 |
unit.2.0.MFCompareA4=0 |
107,7 → 107,7
unit.2.0.MFCompareB8=999 |
unit.2.0.MFCompareB9=999 |
unit.2.0.MFCount=16 |
unit.2.0.MFDisplay0=0 |
unit.2.0.MFDisplay0=1 |
unit.2.0.MFDisplay1=1 |
unit.2.0.MFDisplay10=1 |
unit.2.0.MFDisplay11=0 |
120,7 → 120,7
unit.2.0.MFDisplay4=0 |
unit.2.0.MFDisplay5=0 |
unit.2.0.MFDisplay6=0 |
unit.2.0.MFDisplay7=0 |
unit.2.0.MFDisplay7=1 |
unit.2.0.MFDisplay8=0 |
unit.2.0.MFDisplay9=0 |
unit.2.0.MFEventType0=3 |
155,11 → 155,20
unit.2.0.TCOutputHigh0=1 |
unit.2.0.TCOutputMode0=0 |
unit.2.0.browser_tree_state<Data\ Port>=1 |
unit.2.0.browser_tree_state<addr_c>=1 |
unit.2.0.browser_tree_state<addr_d>=0 |
unit.2.0.browser_tree_state<adr>=0 |
unit.2.0.browser_tree_state<ax>=0 |
unit.2.0.browser_tree_state<bp>=0 |
unit.2.0.browser_tree_state<c>=0 |
unit.2.0.browser_tree_state<cnt>=0 |
unit.2.0.browser_tree_state<d>=0 |
unit.2.0.browser_tree_state<dat_i>=0 |
unit.2.0.browser_tree_state<dat_o>=0 |
unit.2.0.browser_tree_state<di>=1 |
unit.2.0.browser_tree_state<ds>=0 |
unit.2.0.browser_tree_state<dx>=0 |
unit.2.0.browser_tree_state<es>=0 |
unit.2.0.browser_tree_state<func>=0 |
unit.2.0.browser_tree_state<io_reg>=0 |
unit.2.0.browser_tree_state<next_state>=0 |
166,7 → 175,7
unit.2.0.browser_tree_state<pc>=0 |
unit.2.0.browser_tree_state<s_addr_>=0 |
unit.2.0.browser_tree_state<sp>=1 |
unit.2.0.browser_tree_state<state>=1 |
unit.2.0.browser_tree_state<state>=0 |
unit.2.0.browser_tree_state<x>=0 |
unit.2.0.browser_tree_state<y>=0 |
unit.2.0.coretype=ILA |
189,8 → 198,8
unit.2.0.export.format=2 |
unit.2.0.export.signals=Waveform Signals/Buses |
unit.2.0.export.unitName=DEV\:2 MyDevice2 (XC4VFX12) UNIT\:0 MyILA0 (ILA) |
unit.2.0.port.-1.b.0.alias=adr |
unit.2.0.port.-1.b.0.channellist=0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
unit.2.0.port.-1.b.0.alias=addr_d |
unit.2.0.port.-1.b.0.channellist=90 91 92 93 |
unit.2.0.port.-1.b.0.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.-1.b.0.name=DataPort |
unit.2.0.port.-1.b.0.orderindex=-1 |
203,8 → 212,8
unit.2.0.port.-1.b.0.unsignedPrecision=0 |
unit.2.0.port.-1.b.0.unsignedScaleFactor=1.0 |
unit.2.0.port.-1.b.0.visible=1 |
unit.2.0.port.-1.b.1.alias=aluo |
unit.2.0.port.-1.b.1.channellist=154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 |
unit.2.0.port.-1.b.1.alias=adr |
unit.2.0.port.-1.b.1.channellist=0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
unit.2.0.port.-1.b.1.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.-1.b.1.name=DataPort |
unit.2.0.port.-1.b.1.orderindex=-1 |
233,7 → 242,7
unit.2.0.port.-1.b.10.visible=1 |
unit.2.0.port.-1.b.11.alias=pc |
unit.2.0.port.-1.b.11.channellist=52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
unit.2.0.port.-1.b.11.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.-1.b.11.color=java.awt.Color[r\=204,g\=0,b\=51] |
unit.2.0.port.-1.b.11.name=DataPort |
unit.2.0.port.-1.b.11.orderindex=-1 |
unit.2.0.port.-1.b.11.radix=Hex |
247,7 → 256,7
unit.2.0.port.-1.b.11.visible=1 |
unit.2.0.port.-1.b.12.alias=state |
unit.2.0.port.-1.b.12.channellist=87 88 89 |
unit.2.0.port.-1.b.12.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.-1.b.12.color=java.awt.Color[r\=0,g\=51,b\=204] |
unit.2.0.port.-1.b.12.name=DataPort |
unit.2.0.port.-1.b.12.orderindex=-1 |
unit.2.0.port.-1.b.12.radix=Hex |
343,8 → 352,22
unit.2.0.port.-1.b.18.unsignedPrecision=0 |
unit.2.0.port.-1.b.18.unsignedScaleFactor=1.0 |
unit.2.0.port.-1.b.18.visible=1 |
unit.2.0.port.-1.b.2.alias=cnt |
unit.2.0.port.-1.b.2.channellist=216 217 218 |
unit.2.0.port.-1.b.19.alias=y |
unit.2.0.port.-1.b.19.channellist=122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
unit.2.0.port.-1.b.19.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.-1.b.19.name=DataPort |
unit.2.0.port.-1.b.19.orderindex=-1 |
unit.2.0.port.-1.b.19.radix=Hex |
unit.2.0.port.-1.b.19.signedOffset=0.0 |
unit.2.0.port.-1.b.19.signedPrecision=0 |
unit.2.0.port.-1.b.19.signedScaleFactor=1.0 |
unit.2.0.port.-1.b.19.tokencount=0 |
unit.2.0.port.-1.b.19.unsignedOffset=0.0 |
unit.2.0.port.-1.b.19.unsignedPrecision=0 |
unit.2.0.port.-1.b.19.unsignedScaleFactor=1.0 |
unit.2.0.port.-1.b.19.visible=1 |
unit.2.0.port.-1.b.2.alias=aluo |
unit.2.0.port.-1.b.2.channellist=154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 |
unit.2.0.port.-1.b.2.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.-1.b.2.name=DataPort |
unit.2.0.port.-1.b.2.orderindex=-1 |
357,8 → 380,8
unit.2.0.port.-1.b.2.unsignedPrecision=0 |
unit.2.0.port.-1.b.2.unsignedScaleFactor=1.0 |
unit.2.0.port.-1.b.2.visible=1 |
unit.2.0.port.-1.b.3.alias=cx |
unit.2.0.port.-1.b.3.channellist=240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 |
unit.2.0.port.-1.b.3.alias=cnt |
unit.2.0.port.-1.b.3.channellist=216 217 218 |
unit.2.0.port.-1.b.3.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.-1.b.3.name=DataPort |
unit.2.0.port.-1.b.3.orderindex=-1 |
371,8 → 394,8
unit.2.0.port.-1.b.3.unsignedPrecision=0 |
unit.2.0.port.-1.b.3.unsignedScaleFactor=1.0 |
unit.2.0.port.-1.b.3.visible=1 |
unit.2.0.port.-1.b.4.alias=dat_i |
unit.2.0.port.-1.b.4.channellist=20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
unit.2.0.port.-1.b.4.alias=cnt_time |
unit.2.0.port.-1.b.4.channellist=224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 |
unit.2.0.port.-1.b.4.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.-1.b.4.name=DataPort |
unit.2.0.port.-1.b.4.orderindex=-1 |
385,8 → 408,8
unit.2.0.port.-1.b.4.unsignedPrecision=0 |
unit.2.0.port.-1.b.4.unsignedScaleFactor=1.0 |
unit.2.0.port.-1.b.4.visible=1 |
unit.2.0.port.-1.b.5.alias=dat_o |
unit.2.0.port.-1.b.5.channellist=36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
unit.2.0.port.-1.b.5.alias=d |
unit.2.0.port.-1.b.5.channellist=106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
unit.2.0.port.-1.b.5.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.-1.b.5.name=DataPort |
unit.2.0.port.-1.b.5.orderindex=-1 |
399,8 → 422,8
unit.2.0.port.-1.b.5.unsignedPrecision=0 |
unit.2.0.port.-1.b.5.unsignedScaleFactor=1.0 |
unit.2.0.port.-1.b.5.visible=1 |
unit.2.0.port.-1.b.6.alias=di |
unit.2.0.port.-1.b.6.channellist=224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 |
unit.2.0.port.-1.b.6.alias=dat_i |
unit.2.0.port.-1.b.6.channellist=20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
unit.2.0.port.-1.b.6.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.-1.b.6.name=DataPort |
unit.2.0.port.-1.b.6.orderindex=-1 |
413,8 → 436,8
unit.2.0.port.-1.b.6.unsignedPrecision=0 |
unit.2.0.port.-1.b.6.unsignedScaleFactor=1.0 |
unit.2.0.port.-1.b.6.visible=1 |
unit.2.0.port.-1.b.7.alias=func |
unit.2.0.port.-1.b.7.channellist=81 82 83 |
unit.2.0.port.-1.b.7.alias=dat_o |
unit.2.0.port.-1.b.7.channellist=36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
unit.2.0.port.-1.b.7.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.-1.b.7.name=DataPort |
unit.2.0.port.-1.b.7.orderindex=-1 |
427,8 → 450,8
unit.2.0.port.-1.b.7.unsignedPrecision=0 |
unit.2.0.port.-1.b.7.unsignedScaleFactor=1.0 |
unit.2.0.port.-1.b.7.visible=1 |
unit.2.0.port.-1.b.8.alias=imm |
unit.2.0.port.-1.b.8.channellist=116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
unit.2.0.port.-1.b.8.alias=flags |
unit.2.0.port.-1.b.8.channellist=95 96 97 98 99 100 101 102 103 |
unit.2.0.port.-1.b.8.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.-1.b.8.name=DataPort |
unit.2.0.port.-1.b.8.orderindex=-1 |
441,8 → 464,8
unit.2.0.port.-1.b.8.unsignedPrecision=0 |
unit.2.0.port.-1.b.8.unsignedScaleFactor=1.0 |
unit.2.0.port.-1.b.8.visible=1 |
unit.2.0.port.-1.b.9.alias=io_reg |
unit.2.0.port.-1.b.9.channellist=90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
unit.2.0.port.-1.b.9.alias=func |
unit.2.0.port.-1.b.9.channellist=81 82 83 |
unit.2.0.port.-1.b.9.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.-1.b.9.name=DataPort |
unit.2.0.port.-1.b.9.orderindex=-1 |
492,12 → 515,12
unit.2.0.port.-1.s.103.name=DataPort[103] |
unit.2.0.port.-1.s.103.orderindex=-1 |
unit.2.0.port.-1.s.103.visible=1 |
unit.2.0.port.-1.s.104.alias= |
unit.2.0.port.-1.s.104.alias=inta |
unit.2.0.port.-1.s.104.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.-1.s.104.name=DataPort[104] |
unit.2.0.port.-1.s.104.orderindex=-1 |
unit.2.0.port.-1.s.104.visible=1 |
unit.2.0.port.-1.s.105.alias= |
unit.2.0.port.-1.s.105.alias=intr |
unit.2.0.port.-1.s.105.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.-1.s.105.name=DataPort[105] |
unit.2.0.port.-1.s.105.orderindex=-1 |
1157,27 → 1180,27
unit.2.0.port.-1.s.223.name=DataPort[223] |
unit.2.0.port.-1.s.223.orderindex=-1 |
unit.2.0.port.-1.s.223.visible=1 |
unit.2.0.port.-1.s.224.alias= |
unit.2.0.port.-1.s.224.alias=cnt_time0 |
unit.2.0.port.-1.s.224.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.-1.s.224.name=DataPort[224] |
unit.2.0.port.-1.s.224.orderindex=-1 |
unit.2.0.port.-1.s.224.visible=1 |
unit.2.0.port.-1.s.225.alias= |
unit.2.0.port.-1.s.225.alias=cnt_time1 |
unit.2.0.port.-1.s.225.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.-1.s.225.name=DataPort[225] |
unit.2.0.port.-1.s.225.orderindex=-1 |
unit.2.0.port.-1.s.225.visible=1 |
unit.2.0.port.-1.s.226.alias= |
unit.2.0.port.-1.s.226.alias=cnt_time2 |
unit.2.0.port.-1.s.226.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.-1.s.226.name=DataPort[226] |
unit.2.0.port.-1.s.226.orderindex=-1 |
unit.2.0.port.-1.s.226.visible=1 |
unit.2.0.port.-1.s.227.alias= |
unit.2.0.port.-1.s.227.alias=cnt_time3 |
unit.2.0.port.-1.s.227.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.-1.s.227.name=DataPort[227] |
unit.2.0.port.-1.s.227.orderindex=-1 |
unit.2.0.port.-1.s.227.visible=1 |
unit.2.0.port.-1.s.228.alias= |
unit.2.0.port.-1.s.228.alias=cnt_time4 |
unit.2.0.port.-1.s.228.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.-1.s.228.name=DataPort[228] |
unit.2.0.port.-1.s.228.orderindex=-1 |
1707,7 → 1730,7
unit.2.0.port.-1.s.93.name=DataPort[93] |
unit.2.0.port.-1.s.93.orderindex=-1 |
unit.2.0.port.-1.s.93.visible=1 |
unit.2.0.port.-1.s.94.alias= |
unit.2.0.port.-1.s.94.alias=byte_op |
unit.2.0.port.-1.s.94.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.-1.s.94.name=DataPort[94] |
unit.2.0.port.-1.s.94.orderindex=-1 |
2387,12 → 2410,12
unit.2.0.port.15.b.0.visible=1 |
unit.2.0.port.15.buscount=1 |
unit.2.0.port.15.channelcount=32 |
unit.2.0.port.15.s.0.alias= |
unit.2.0.port.15.s.0.alias=cnt_time0 |
unit.2.0.port.15.s.0.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.15.s.0.name=TriggerPort15[0] |
unit.2.0.port.15.s.0.orderindex=-1 |
unit.2.0.port.15.s.0.visible=1 |
unit.2.0.port.15.s.1.alias= |
unit.2.0.port.15.s.1.alias=cnt_time1 |
unit.2.0.port.15.s.1.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.15.s.1.name=TriggerPort15[1] |
unit.2.0.port.15.s.1.orderindex=-1 |
2447,7 → 2470,7
unit.2.0.port.15.s.19.name=TriggerPort15[19] |
unit.2.0.port.15.s.19.orderindex=-1 |
unit.2.0.port.15.s.19.visible=1 |
unit.2.0.port.15.s.2.alias= |
unit.2.0.port.15.s.2.alias=cnt_time2 |
unit.2.0.port.15.s.2.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.15.s.2.name=TriggerPort15[2] |
unit.2.0.port.15.s.2.orderindex=-1 |
2502,7 → 2525,7
unit.2.0.port.15.s.29.name=TriggerPort15[29] |
unit.2.0.port.15.s.29.orderindex=-1 |
unit.2.0.port.15.s.29.visible=1 |
unit.2.0.port.15.s.3.alias= |
unit.2.0.port.15.s.3.alias=cnt_time3 |
unit.2.0.port.15.s.3.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.15.s.3.name=TriggerPort15[3] |
unit.2.0.port.15.s.3.orderindex=-1 |
2517,12 → 2540,12
unit.2.0.port.15.s.31.name=TriggerPort15[31] |
unit.2.0.port.15.s.31.orderindex=-1 |
unit.2.0.port.15.s.31.visible=1 |
unit.2.0.port.15.s.4.alias= |
unit.2.0.port.15.s.4.alias=cnt_time4 |
unit.2.0.port.15.s.4.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.15.s.4.name=TriggerPort15[4] |
unit.2.0.port.15.s.4.orderindex=-1 |
unit.2.0.port.15.s.4.visible=1 |
unit.2.0.port.15.s.5.alias= |
unit.2.0.port.15.s.5.alias=DataPort[229] |
unit.2.0.port.15.s.5.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.15.s.5.name=TriggerPort15[5] |
unit.2.0.port.15.s.5.orderindex=-1 |
2892,12 → 2915,12
unit.2.0.port.6.s.13.name=TriggerPort6[13] |
unit.2.0.port.6.s.13.orderindex=-1 |
unit.2.0.port.6.s.13.visible=1 |
unit.2.0.port.6.s.14.alias= |
unit.2.0.port.6.s.14.alias=inta |
unit.2.0.port.6.s.14.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.6.s.14.name=TriggerPort6[14] |
unit.2.0.port.6.s.14.orderindex=-1 |
unit.2.0.port.6.s.14.visible=1 |
unit.2.0.port.6.s.15.alias= |
unit.2.0.port.6.s.15.alias=intr |
unit.2.0.port.6.s.15.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.6.s.15.name=TriggerPort6[15] |
unit.2.0.port.6.s.15.orderindex=-1 |
2912,12 → 2935,12
unit.2.0.port.6.s.3.name=TriggerPort6[3] |
unit.2.0.port.6.s.3.orderindex=-1 |
unit.2.0.port.6.s.3.visible=1 |
unit.2.0.port.6.s.4.alias= |
unit.2.0.port.6.s.4.alias=byte_op |
unit.2.0.port.6.s.4.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.6.s.4.name=TriggerPort6[4] |
unit.2.0.port.6.s.4.orderindex=-1 |
unit.2.0.port.6.s.4.visible=1 |
unit.2.0.port.6.s.5.alias= |
unit.2.0.port.6.s.5.alias=DataPort[95] |
unit.2.0.port.6.s.5.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.6.s.5.name=TriggerPort6[5] |
unit.2.0.port.6.s.5.orderindex=-1 |
2957,7 → 2980,7
unit.2.0.port.7.b.0.visible=1 |
unit.2.0.port.7.buscount=1 |
unit.2.0.port.7.channelcount=16 |
unit.2.0.port.7.s.0.alias= |
unit.2.0.port.7.s.0.alias=DataPort[106] |
unit.2.0.port.7.s.0.color=java.awt.Color[r\=0,g\=0,b\=124] |
unit.2.0.port.7.s.0.name=TriggerPort7[0] |
unit.2.0.port.7.s.0.orderindex=-1 |
3396,7 → 3419,7
unit.2.0.triggerWindowDepth=1024 |
unit.2.0.triggerWindowTS=0 |
unit.2.0.username=MyILA0 |
unit.2.0.waveform.count=35 |
unit.2.0.waveform.count=38 |
unit.2.0.waveform.posn.0.channel=2147483646 |
unit.2.0.waveform.posn.0.name=aluo |
unit.2.0.waveform.posn.0.radix=1 |
3406,7 → 3429,7
unit.2.0.waveform.posn.1.radix=1 |
unit.2.0.waveform.posn.1.type=bus |
unit.2.0.waveform.posn.10.channel=2147483646 |
unit.2.0.waveform.posn.10.name=dat_o |
unit.2.0.waveform.posn.10.name=dat_i |
unit.2.0.waveform.posn.10.radix=1 |
unit.2.0.waveform.posn.10.type=bus |
unit.2.0.waveform.posn.100.channel=2147483646 |
3450,7 → 3473,7
unit.2.0.waveform.posn.109.radix=1 |
unit.2.0.waveform.posn.109.type=bus |
unit.2.0.waveform.posn.11.channel=2147483646 |
unit.2.0.waveform.posn.11.name=imm |
unit.2.0.waveform.posn.11.name=dat_o |
unit.2.0.waveform.posn.11.radix=1 |
unit.2.0.waveform.posn.11.type=bus |
unit.2.0.waveform.posn.110.channel=2147483646 |
3493,10 → 3516,10
unit.2.0.waveform.posn.119.name=adr |
unit.2.0.waveform.posn.119.radix=1 |
unit.2.0.waveform.posn.119.type=bus |
unit.2.0.waveform.posn.12.channel=2147483646 |
unit.2.0.waveform.posn.12.name=pc |
unit.2.0.waveform.posn.12.channel=72 |
unit.2.0.waveform.posn.12.name=ack |
unit.2.0.waveform.posn.12.radix=1 |
unit.2.0.waveform.posn.12.type=bus |
unit.2.0.waveform.posn.12.type=signal |
unit.2.0.waveform.posn.120.channel=2147483646 |
unit.2.0.waveform.posn.120.name=adr |
unit.2.0.waveform.posn.120.radix=1 |
3537,8 → 3560,8
unit.2.0.waveform.posn.129.name=adr |
unit.2.0.waveform.posn.129.radix=1 |
unit.2.0.waveform.posn.129.type=bus |
unit.2.0.waveform.posn.13.channel=72 |
unit.2.0.waveform.posn.13.name=ack |
unit.2.0.waveform.posn.13.channel=73 |
unit.2.0.waveform.posn.13.name=stb |
unit.2.0.waveform.posn.13.radix=1 |
unit.2.0.waveform.posn.13.type=signal |
unit.2.0.waveform.posn.130.channel=2147483646 |
3545,28 → 3568,28
unit.2.0.waveform.posn.130.name=adr |
unit.2.0.waveform.posn.130.radix=1 |
unit.2.0.waveform.posn.130.type=bus |
unit.2.0.waveform.posn.14.channel=73 |
unit.2.0.waveform.posn.14.name=stb |
unit.2.0.waveform.posn.14.channel=74 |
unit.2.0.waveform.posn.14.name=cyc |
unit.2.0.waveform.posn.14.radix=1 |
unit.2.0.waveform.posn.14.type=signal |
unit.2.0.waveform.posn.15.channel=74 |
unit.2.0.waveform.posn.15.name=cyc |
unit.2.0.waveform.posn.15.channel=75 |
unit.2.0.waveform.posn.15.name=tga |
unit.2.0.waveform.posn.15.radix=1 |
unit.2.0.waveform.posn.15.type=signal |
unit.2.0.waveform.posn.16.channel=75 |
unit.2.0.waveform.posn.16.name=tga |
unit.2.0.waveform.posn.16.channel=76 |
unit.2.0.waveform.posn.16.name=we |
unit.2.0.waveform.posn.16.radix=1 |
unit.2.0.waveform.posn.16.type=signal |
unit.2.0.waveform.posn.17.channel=76 |
unit.2.0.waveform.posn.17.name=we |
unit.2.0.waveform.posn.17.channel=77 |
unit.2.0.waveform.posn.17.name=clk |
unit.2.0.waveform.posn.17.radix=1 |
unit.2.0.waveform.posn.17.type=signal |
unit.2.0.waveform.posn.18.channel=77 |
unit.2.0.waveform.posn.18.name=clk |
unit.2.0.waveform.posn.18.channel=207 |
unit.2.0.waveform.posn.18.name=flash_ce2_ |
unit.2.0.waveform.posn.18.radix=1 |
unit.2.0.waveform.posn.18.type=signal |
unit.2.0.waveform.posn.19.channel=207 |
unit.2.0.waveform.posn.19.name=flash_ce2_ |
unit.2.0.waveform.posn.19.channel=208 |
unit.2.0.waveform.posn.19.name=sram_adv_ |
unit.2.0.waveform.posn.19.radix=1 |
unit.2.0.waveform.posn.19.type=signal |
unit.2.0.waveform.posn.2.channel=2147483646 |
3573,98 → 3596,98
unit.2.0.waveform.posn.2.name=y |
unit.2.0.waveform.posn.2.radix=1 |
unit.2.0.waveform.posn.2.type=bus |
unit.2.0.waveform.posn.20.channel=208 |
unit.2.0.waveform.posn.20.name=sram_adv_ |
unit.2.0.waveform.posn.20.channel=209 |
unit.2.0.waveform.posn.20.name=sram_cen_ |
unit.2.0.waveform.posn.20.radix=1 |
unit.2.0.waveform.posn.20.type=signal |
unit.2.0.waveform.posn.21.channel=209 |
unit.2.0.waveform.posn.21.name=sram_cen_ |
unit.2.0.waveform.posn.21.channel=214 |
unit.2.0.waveform.posn.21.name=sf_we_ |
unit.2.0.waveform.posn.21.radix=1 |
unit.2.0.waveform.posn.21.type=signal |
unit.2.0.waveform.posn.22.channel=214 |
unit.2.0.waveform.posn.22.name=sf_we_ |
unit.2.0.waveform.posn.22.channel=215 |
unit.2.0.waveform.posn.22.name=sf_oe_ |
unit.2.0.waveform.posn.22.radix=1 |
unit.2.0.waveform.posn.22.type=signal |
unit.2.0.waveform.posn.23.channel=215 |
unit.2.0.waveform.posn.23.name=sf_oe_ |
unit.2.0.waveform.posn.23.channel=2147483646 |
unit.2.0.waveform.posn.23.name=s_bw_ |
unit.2.0.waveform.posn.23.radix=1 |
unit.2.0.waveform.posn.23.type=signal |
unit.2.0.waveform.posn.23.type=bus |
unit.2.0.waveform.posn.24.channel=2147483646 |
unit.2.0.waveform.posn.24.name=s_bw_ |
unit.2.0.waveform.posn.24.name=s_data_ |
unit.2.0.waveform.posn.24.radix=1 |
unit.2.0.waveform.posn.24.type=bus |
unit.2.0.waveform.posn.25.channel=2147483646 |
unit.2.0.waveform.posn.25.name=s_data_ |
unit.2.0.waveform.posn.25.name=s_addr_ |
unit.2.0.waveform.posn.25.radix=1 |
unit.2.0.waveform.posn.25.type=bus |
unit.2.0.waveform.posn.26.channel=2147483646 |
unit.2.0.waveform.posn.26.name=s_addr_ |
unit.2.0.waveform.posn.26.name=cnt |
unit.2.0.waveform.posn.26.radix=1 |
unit.2.0.waveform.posn.26.type=bus |
unit.2.0.waveform.posn.27.channel=2147483646 |
unit.2.0.waveform.posn.27.name=cnt |
unit.2.0.waveform.posn.27.channel=219 |
unit.2.0.waveform.posn.27.name=op |
unit.2.0.waveform.posn.27.radix=1 |
unit.2.0.waveform.posn.27.type=bus |
unit.2.0.waveform.posn.28.channel=219 |
unit.2.0.waveform.posn.28.name=op |
unit.2.0.waveform.posn.27.type=signal |
unit.2.0.waveform.posn.28.channel=220 |
unit.2.0.waveform.posn.28.name=zbt_stb |
unit.2.0.waveform.posn.28.radix=1 |
unit.2.0.waveform.posn.28.type=signal |
unit.2.0.waveform.posn.29.channel=220 |
unit.2.0.waveform.posn.29.name=zbt_stb |
unit.2.0.waveform.posn.29.channel=221 |
unit.2.0.waveform.posn.29.name=flash_stb |
unit.2.0.waveform.posn.29.radix=1 |
unit.2.0.waveform.posn.29.type=signal |
unit.2.0.waveform.posn.3.channel=2147483646 |
unit.2.0.waveform.posn.3.name=io_reg |
unit.2.0.waveform.posn.3.name=pc |
unit.2.0.waveform.posn.3.radix=1 |
unit.2.0.waveform.posn.3.type=bus |
unit.2.0.waveform.posn.30.channel=221 |
unit.2.0.waveform.posn.30.name=flash_stb |
unit.2.0.waveform.posn.30.channel=222 |
unit.2.0.waveform.posn.30.name=flash_arena |
unit.2.0.waveform.posn.30.radix=1 |
unit.2.0.waveform.posn.30.type=signal |
unit.2.0.waveform.posn.31.channel=222 |
unit.2.0.waveform.posn.31.name=flash_arena |
unit.2.0.waveform.posn.31.channel=223 |
unit.2.0.waveform.posn.31.name=vdu_arena |
unit.2.0.waveform.posn.31.radix=1 |
unit.2.0.waveform.posn.31.type=signal |
unit.2.0.waveform.posn.32.channel=223 |
unit.2.0.waveform.posn.32.name=vdu_arena |
unit.2.0.waveform.posn.32.channel=2147483646 |
unit.2.0.waveform.posn.32.name=d |
unit.2.0.waveform.posn.32.radix=1 |
unit.2.0.waveform.posn.32.type=signal |
unit.2.0.waveform.posn.32.type=bus |
unit.2.0.waveform.posn.33.channel=2147483646 |
unit.2.0.waveform.posn.33.name=cx |
unit.2.0.waveform.posn.33.name=addr_d |
unit.2.0.waveform.posn.33.radix=1 |
unit.2.0.waveform.posn.33.type=bus |
unit.2.0.waveform.posn.34.channel=2147483646 |
unit.2.0.waveform.posn.34.name=di |
unit.2.0.waveform.posn.34.channel=94 |
unit.2.0.waveform.posn.34.name=byte_op |
unit.2.0.waveform.posn.34.radix=1 |
unit.2.0.waveform.posn.34.type=bus |
unit.2.0.waveform.posn.35.channel=2147483646 |
unit.2.0.waveform.posn.35.name=adr |
unit.2.0.waveform.posn.34.type=signal |
unit.2.0.waveform.posn.35.channel=104 |
unit.2.0.waveform.posn.35.name=inta |
unit.2.0.waveform.posn.35.radix=1 |
unit.2.0.waveform.posn.35.type=bus |
unit.2.0.waveform.posn.36.channel=2147483646 |
unit.2.0.waveform.posn.36.name=adr |
unit.2.0.waveform.posn.35.type=signal |
unit.2.0.waveform.posn.36.channel=105 |
unit.2.0.waveform.posn.36.name=intr |
unit.2.0.waveform.posn.36.radix=1 |
unit.2.0.waveform.posn.36.type=bus |
unit.2.0.waveform.posn.36.type=signal |
unit.2.0.waveform.posn.37.channel=2147483646 |
unit.2.0.waveform.posn.37.name=adr |
unit.2.0.waveform.posn.37.name=cnt_time |
unit.2.0.waveform.posn.37.radix=1 |
unit.2.0.waveform.posn.37.type=bus |
unit.2.0.waveform.posn.38.channel=2147483646 |
unit.2.0.waveform.posn.38.name=adr |
unit.2.0.waveform.posn.38.channel=228 |
unit.2.0.waveform.posn.38.name=cpu_block |
unit.2.0.waveform.posn.38.radix=1 |
unit.2.0.waveform.posn.38.type=bus |
unit.2.0.waveform.posn.39.channel=2147483646 |
unit.2.0.waveform.posn.39.name=adr |
unit.2.0.waveform.posn.38.type=signal |
unit.2.0.waveform.posn.39.channel=228 |
unit.2.0.waveform.posn.39.name=cpu_block |
unit.2.0.waveform.posn.39.radix=1 |
unit.2.0.waveform.posn.39.type=bus |
unit.2.0.waveform.posn.39.type=signal |
unit.2.0.waveform.posn.4.channel=2147483646 |
unit.2.0.waveform.posn.4.name=state |
unit.2.0.waveform.posn.4.radix=1 |
unit.2.0.waveform.posn.4.type=bus |
unit.2.0.waveform.posn.40.channel=2147483646 |
unit.2.0.waveform.posn.40.name=adr |
unit.2.0.waveform.posn.40.channel=228 |
unit.2.0.waveform.posn.40.name=cpu_block |
unit.2.0.waveform.posn.40.radix=1 |
unit.2.0.waveform.posn.40.type=bus |
unit.2.0.waveform.posn.40.type=signal |
unit.2.0.waveform.posn.41.channel=2147483646 |
unit.2.0.waveform.posn.41.name=adr |
unit.2.0.waveform.posn.41.radix=1 |
3702,7 → 3725,7
unit.2.0.waveform.posn.49.radix=1 |
unit.2.0.waveform.posn.49.type=bus |
unit.2.0.waveform.posn.5.channel=2147483646 |
unit.2.0.waveform.posn.5.name=next_state |
unit.2.0.waveform.posn.5.name=flags |
unit.2.0.waveform.posn.5.radix=1 |
unit.2.0.waveform.posn.5.type=bus |
unit.2.0.waveform.posn.50.channel=2147483646 |
3746,7 → 3769,7
unit.2.0.waveform.posn.59.radix=1 |
unit.2.0.waveform.posn.59.type=bus |
unit.2.0.waveform.posn.6.channel=2147483646 |
unit.2.0.waveform.posn.6.name=func |
unit.2.0.waveform.posn.6.name=next_state |
unit.2.0.waveform.posn.6.radix=1 |
unit.2.0.waveform.posn.6.type=bus |
unit.2.0.waveform.posn.60.channel=2147483646 |
3790,7 → 3813,7
unit.2.0.waveform.posn.69.radix=1 |
unit.2.0.waveform.posn.69.type=bus |
unit.2.0.waveform.posn.7.channel=2147483646 |
unit.2.0.waveform.posn.7.name=t |
unit.2.0.waveform.posn.7.name=func |
unit.2.0.waveform.posn.7.radix=1 |
unit.2.0.waveform.posn.7.type=bus |
unit.2.0.waveform.posn.70.channel=2147483646 |
3834,7 → 3857,7
unit.2.0.waveform.posn.79.radix=1 |
unit.2.0.waveform.posn.79.type=bus |
unit.2.0.waveform.posn.8.channel=2147483646 |
unit.2.0.waveform.posn.8.name=adr |
unit.2.0.waveform.posn.8.name=t |
unit.2.0.waveform.posn.8.radix=1 |
unit.2.0.waveform.posn.8.type=bus |
unit.2.0.waveform.posn.80.channel=2147483646 |
3878,7 → 3901,7
unit.2.0.waveform.posn.89.radix=1 |
unit.2.0.waveform.posn.89.type=bus |
unit.2.0.waveform.posn.9.channel=2147483646 |
unit.2.0.waveform.posn.9.name=dat_i |
unit.2.0.waveform.posn.9.name=adr |
unit.2.0.waveform.posn.9.radix=1 |
unit.2.0.waveform.posn.9.type=bus |
unit.2.0.waveform.posn.90.channel=2147483646 |
/trunk/impl/virtex4-ml403ep/sim/test_kotku.v
8,9 → 8,10
wire lcd_hsync; |
wire lcd_vsync; |
reg clk; |
reg but; |
wire s_clk; |
wire [20:0] sf_addr; |
wire [15:0] sf_data; |
wire [31:0] sf_data; |
wire sf_oe; |
wire sf_we; |
wire [ 3:0] s_bw; |
39,7 → 40,11
.sram_adv_ld_n_ (s_adv), |
.flash_ce2_ (f_ce), |
|
.but_ (1'b0) |
.butc_ (but), |
.bute_ (1'b0), |
.butw_ (1'b0), |
.butn_ (1'b0), |
.buts_ (1'b0) |
); |
|
flash_stub fs0 ( |
72,6 → 77,10
initial |
begin |
clk <= 1'b1; |
but <= 1'b0; |
#100000 but <= 1'b1; |
#700000 but <= 1'b0; |
#700000 but <= 1'b1; |
end |
|
endmodule |
/trunk/impl/virtex4-ml403ep/sim/t.do
1,11 → 1,12
quit -sim |
vdel -all -lib work |
vmap unisims /opt/Xilinx/10.1/modelsim/verilog/unisims |
vlib work |
vlog -work work -lint +incdir+../../../rtl-model +incdir+../../../sim ../syn/kotku.v ../syn/clock.v ../../../rtl-model/regfile.v ../../../rtl-model/alu.v ../../../rtl-model/cpu.v ../../../rtl-model/exec.v ../../../rtl-model/fetch.v ../../../rtl-model/jmp_cond.v ../../../rtl-model/util/primitives.v ../../../rtl-model/util/div_su.v ../../../rtl-model/util/div_uu.v ../../../rtl-model/rotate.v test_kotku.v flash_stub.v ../../../sim/mult.v ../../../soc/vga/rtl/vdu.v ../../../soc/vga/rtl/char_rom_b16.v ../../../soc/vga/rtl/ram2k_b16_attr.v ../../../soc/vga/rtl/ram2k_b16.v ../mem/flash_cntrl.v ../mem/zbt_cntrl.v CY7C1354BV25.v ../../../soc/keyb/rtl/ps2_keyb.v ../dbg/hw_dbg.v |
vlog -work work -lint +incdir+../../../rtl-model +incdir+../../../sim ../syn/kotku.v ../syn/clock.v ../../../rtl-model/regfile.v ../../../rtl-model/alu.v ../../../rtl-model/cpu.v ../../../rtl-model/exec.v ../../../rtl-model/fetch.v ../../../rtl-model/jmp_cond.v ../../../rtl-model/util/primitives.v ../../../rtl-model/util/div_su.v ../../../rtl-model/util/div_uu.v ../../../rtl-model/rotate.v test_kotku.v flash_stub.v ../../../sim/mult.v ../../../soc/vga/rtl/vdu.v ../../../soc/vga/rtl/char_rom_b16.v ../../../soc/vga/rtl/ram2k_b16_attr.v ../../../soc/vga/rtl/ram2k_b16.v ../mem/flash_cntrl.v ../mem/zbt_cntrl.v CY7C1354BV25.v ../../../soc/keyb/rtl/ps2_keyb.v ../dbg/hw_dbg.v ../dbg/pc_trace.v ../dbg/clk_uart.v ../dbg/send_addr.v ../dbg/send_serial.v |
vlog -work unisims /opt/Xilinx/10.1/ISE/verilog/src/glbl.v |
vsim -L /opt/Xilinx/10.1/modelsim/verilog/unisims -novopt -t ps work.testbench work.glbl |
add wave -label clk100 /testbench/clk |
add wave -label clk /testbench/kotku/clk |
add wave -label clk /testbench/kotku/zet_proc/wb_clk_i |
add wave -label rst /testbench/kotku/rst |
add wave -label pc -radix hexadecimal /testbench/kotku/zet_proc/fetch0/pc |
add wave -divider fetch |
17,14 → 18,25
add wave -label end_seq /testbench/kotku/zet_proc/fetch0/end_seq |
add wave -label need_modrm /testbench/kotku/zet_proc/fetch0/need_modrm |
add wave -label need_off /testbench/kotku/zet_proc/fetch0/need_off |
add wave -label off_size /testbench/kotku/zet_proc/fetch0/off_size |
add wave -label need_imm /testbench/kotku/zet_proc/fetch0/need_imm |
add wave -label imm_size /testbench/kotku/zet_proc/fetch0/imm_size |
add wave -label ir /testbench/kotku/zet_proc/fetch0/ir |
add wave -label imm -radix hexadecimal /testbench/kotku/zet_proc/fetch0/imm |
add wave -label off -radix hexadecimal /testbench/kotku/zet_proc/fetch0/off |
add wave -divider mem |
add wave -divider regfile |
add wave -label ax -radix hexadecimal /testbench/kotku/zet_proc/exec0/reg0/r\[0\] |
add wave -label cx -radix hexadecimal /testbench/kotku/zet_proc/exec0/reg0/r\[1\] |
add wave -label dx -radix hexadecimal /testbench/kotku/zet_proc/exec0/reg0/r\[2\] |
add wave -label si -radix hexadecimal /testbench/kotku/zet_proc/exec0/reg0/r\[6\] |
add wave -label tmp -radix hexadecimal /testbench/kotku/zet_proc/exec0/reg0/r\[13\] |
add wave -label d -radix hexadecimal /testbench/kotku/zet_proc/exec0/reg0/d\[15:0\] |
add wave -label wr -radix hexadecimal /testbench/kotku/zet_proc/exec0/reg0/wr |
add wave -divider wb_master |
add wave -label cs -radix hexadecimal /testbench/kotku/zet_proc/wm0/cs |
add wave -label op -radix hexadecimal /testbench/kotku/zet_proc/wm0/op |
add wave -label block /testbench/kotku/zet_proc/wm0/cpu_block |
add wave -label dbg_block /testbench/kotku/zet_proc/dbg_block |
add wave -label wb_block /testbench/kotku/zet_proc/wb_block |
add wave -label dat_o -radix hexadecimal sim:/testbench/kotku/dat_o |
add wave -label dat_i -radix hexadecimal sim:/testbench/kotku/dat_i |
add wave -label adr -radix hexadecimal /testbench/kotku/adr |
36,12 → 48,17
add wave -label we_o -radix hexadecimal /testbench/kotku/zet_proc/wm0/wb_we_o |
add wave -label tga_o -radix hexadecimal /testbench/kotku/zet_proc/wm0/wb_tga_o |
add wave -label cpu_dat_i -radix hexadecimal /testbench/kotku/zet_proc/wm0/cpu_dat_i |
add wave -divider flash |
add wave -radix hexadecimal /sf_addr |
add wave -radix hexadecimal /sf_data |
add wave -radix hexadecimal /sf_oe |
add wave -radix hexadecimal /sf_we |
add wave -radix hexadecimal /f_ce |
add wave -divider alu |
add wave -label x -radix hexadecimal /testbench/kotku/zet_proc/exec0/a |
add wave -label y -radix hexadecimal /testbench/kotku/zet_proc/exec0/bus_b |
add wave -label t -radix hexadecimal /testbench/kotku/zet_proc/exec0/alu0/t |
add wave -label func -radix hexadecimal /testbench/kotku/zet_proc/exec0/alu0/func |
add wave -label r\[1\] -radix hexadecimal /testbench/kotku/zet_proc/exec0/reg0/r\[1\] |
add wave -label d -radix hexadecimal /testbench/kotku/zet_proc/exec0/reg0/d |
add wave -label addr_a /testbench/kotku/zet_proc/exec0/reg0/addr_a |
add wave -label addr_d /testbench/kotku/zet_proc/exec0/reg0/addr_d |
49,8 → 66,6
add wave -label we /testbench/kotku/we |
add wave -label ack /testbench/kotku/ack |
add wave -label fetch_or_exec /testbench/kotku/zet_proc/fetch_or_exec |
add wave -divider vdu |
add wave -radix hexadecimal /testbench/kotku/vdu0/* |
add wave -divider hw_dbg |
add wave -radix hexadecimal /testbench/kotku/dbg0/* |
run 50us |
add wave -divider zbt |
add wave -radix hexadecimal -r /testbench/kotku/zbt0/* |
run 300us |
/trunk/impl/virtex4-ml403ep/sim/flash_stub.v
13,10 → 13,10
reg [31:0] dat_o; |
|
// Continous assignments |
assign flash_data_ = flash_ce2_ ? dat_o : 31'hzzzzzzzz; |
assign flash_data_ = flash_ce2_ ? dat_o : 32'hzzzzzzzz; |
|
// Behaviour |
initial $readmemh("data.ml403", rom, 21'h0); |
initial $readmemh("00_test2.ml403", rom, 21'h0); |
initial $readmemh("hd.ml403", rom, 21'h100000); |
|
always @(*) dat_o <= #110 |
/trunk/impl/virtex4-ml403ep/syn/kotku-dbg.prj
15,10 → 15,15
verilog work "../../../../rtl-model/exec.v" |
verilog work "../../../../soc/vga/rtl/vdu.v" |
verilog work "../../../../soc/keyb/rtl/ps2_keyb.v" |
verilog work "../../../../soc/timer.v" |
verilog work "../../../../rtl-model/cpu.v" |
verilog work "../../mem/zbt_cntrl.v" |
verilog work "../../mem/flash_cntrl.v" |
verilog work "../../dbg/hw_dbg.v" |
verilog work "../../dbg/send_serial.v" |
verilog work "../../dbg/send_addr.v" |
verilog work "../../dbg/pc_trace.v" |
verilog work "../../dbg/clk_uart.v" |
verilog work "../clock.v" |
verilog work "../kotku.v" |
verilog work "../../lcd/lcd_display.v" |
/trunk/impl/virtex4-ml403ep/syn/kotku.v
30,6 → 30,8
input butw_, |
input butn_, |
input buts_, |
|
output trx_, |
`endif |
|
output tft_lcd_clk_, |
70,6 → 72,7
wire cyc; |
wire [ 7:0] keyb_dat_o; |
wire keyb_io_arena; |
wire keyb_io_status; |
wire keyb_arena; |
|
wire [15:0] vdu_dat_o; |
107,6 → 110,7
wire zbt_stb_i; |
|
`ifdef DEBUG |
reg [31:0] cnt_time; |
wire [35:0] control0; |
wire [ 5:0] funct; |
wire [ 2:0] state, next_state; |
119,7 → 123,19
wire [15:0] aluo; |
wire [ 2:0] cnt; |
wire op; |
wire [15:0] r1, r2; |
wire block; |
wire cpu_block; |
wire sys_clk; |
wire rst2; |
wire clk_921600; |
wire [15:0] ax, dx, bp, si, es; |
wire [15:0] c; |
wire [ 3:0] addr_c; |
wire [15:0] cpu_dat_o; |
wire [15:0] d; |
wire [ 3:0] addr_d; |
wire byte_op; |
wire [ 8:0] flags; |
|
wire [15:0] dbg_vdu_dat_o; |
wire [11:1] dbg_vdu_adr_o; |
132,6 → 148,19
wire dbg_zbt_we_o; |
wire [ 1:0] dbg_zbt_sel_o; |
wire dbg_zbt_stb_o; |
|
wire [ 2:0] old_zet_st; |
wire [ 4:0] pack; |
wire [19:0] tr_dat; |
wire tr_new_pc; |
wire tr_st; |
wire tr_stb; |
wire tr_ack; |
wire addr_st; |
|
wire end_seq; |
wire ext_int; |
wire cpu_block2; |
`endif |
|
// Register declarations |
143,7 → 172,7
clock c0 ( |
.clk_100M (clk_100M), |
.sys_clk_in_ (sys_clk_in_), |
.clk (clk), |
.clk (sys_clk), |
.vdu_clk (tft_lcd_clk_), |
.rst (rst_lck) |
); |
151,7 → 180,7
vdu vdu0 ( |
// Wishbone signals |
.wb_clk_i (tft_lcd_clk_), // 25 Mhz VDU clock |
.wb_rst_i (rst_lck), |
.wb_rst_i (rst2), |
.wb_dat_i (vdu_dat_i), |
.wb_dat_o (vdu_dat_o), |
.wb_adr_i (vdu_adr_i), |
196,7 → 225,7
.op (op), |
`endif |
.wb_clk_i (clk), |
.wb_rst_i (rst_lck), |
.wb_rst_i (rst2), |
.wb_dat_i (dat_o), |
.wb_dat_o (zbt_dat_o), |
.wb_adr_i (zbt_adr_i), |
231,7 → 260,14
.ps2_clk_ (ps2_clk_), |
.ps2_data_ (ps2_data_) |
); |
|
/* |
timer timer0 ( |
.wb_clk_i (clk), |
.wb_rst_i (rst), |
.wb_tgc_o (intr), |
.wb_tgc_i (inta) |
); |
*/ |
cpu zet_proc ( |
`ifdef DEBUG |
.cs (cs), |
243,8 → 279,22
.y (y), |
.imm (imm), |
.aluo (aluo), |
.r1 (r1), |
.r2 (r2), |
.ax (ax), |
.dx (dx), |
.bp (bp), |
.si (si), |
.es (es), |
.dbg_block (cpu_block), |
.c (c), |
.addr_c (addr_c), |
.cpu_dat_o (cpu_dat_o), |
.d (d), |
.byte_exec (byte_op), |
.addr_d (addr_d), |
.flags (flags), |
.end_seq (end_seq), |
.ext_int (ext_int), |
.cpu_block (cpu_block2), |
`endif |
|
// Wishbone master interface |
265,6 → 315,7
|
`ifdef DEBUG |
// Module instantiations |
|
icon icon0 ( |
.CONTROL0 (control0) |
); |
271,7 → 322,7
|
ila ila0 ( |
.CONTROL (control0), |
.CLK (clk_100M), |
.CLK (clk), |
.TRIG0 (adr), |
.TRIG1 ({dat_o,dat_i}), |
.TRIG2 (pc), |
278,8 → 329,10
.TRIG3 ({clk,we,tga,cyc,stb,ack}), |
.TRIG4 (funct), |
.TRIG5 ({state,next_state}), |
.TRIG6 (io_reg), |
.TRIG7 (imm), |
.TRIG6 ({intr,inta,flags,byte_op,addr_d}), |
// .TRIG7 (imm), |
// .TRIG7 (tr_dat[15:0]), |
.TRIG7 (d), |
.TRIG8 ({x,y}), |
.TRIG9 (aluo), |
.TRIG10 (sram_flash_addr_), |
288,7 → 341,8
sram_cen_, sram_adv_ld_n_, flash_ce2_}), |
.TRIG13 (cnt), |
.TRIG14 ({vdu_mem_arena,flash_mem_arena,flash_stb,zbt_stb,op}), |
.TRIG15 ({r1,r2}) |
.TRIG15 (cnt_time) |
// .TRIG15 ({block,trx_,rst2,rst,tr_ack,tr_stb,tr_st,tr_new_pc,addr_st,11'h0,pack,old_zet_st,tr_dat[19:16]}) |
); |
|
lcd_display lcd0 ( |
309,7 → 363,7
|
hw_dbg dbg0 ( |
.clk (clk), |
.rst_lck (rst_lck), |
.rst_lck (rst2), |
.rst (rst), |
.butc_ (butc_), |
.bute_ (bute_), |
333,6 → 387,34
.zbt_ack_i (zbt_ack) |
); |
|
clk_uart clk0 ( |
.clk_100M (clk_100M), |
.rst (rst_lck), |
.clk_921600 (clk_921600), |
.rst2 (rst2) |
); |
|
pc_trace pc0 ( |
`ifdef DEBUG |
.old_zet_st (old_zet_st), |
|
.dat (tr_dat), |
.new_pc (tr_new_pc), |
.st (tr_st), |
.stb (tr_stb), |
.ack (tr_ack), |
.pack (pack), |
.addr_st (addr_st), |
`endif |
.trx_ (trx_), |
|
.clk (clk), |
.rst (rst2), |
.pc (pc), |
.zet_st (state), |
.block (block) |
); |
|
// Continuous assignments |
assign f1 = { 3'b0, rst, 4'h0, io_reg, 4'h0, dat_o, 7'h0, tga, 7'h0, ack, 4'h0 }; |
assign f2 = { adr, 7'h0, we, 3'h0, stb, 3'h0, cyc, 8'h0, pc }; |
351,7 → 433,12
assign zbt_we_i = rst ? dbg_zbt_we_o : we; |
assign zbt_sel_i = rst ? dbg_zbt_sel_o : sel; |
assign zbt_stb_i = rst ? dbg_zbt_stb_o : zbt_stb; |
`ifdef DEBUG_TRACE |
assign cpu_block = block; |
`else |
assign cpu_block = 1'b0; |
`endif |
`else |
assign vdu_dat_i = dat_o; |
assign vdu_adr_i = adr[11:1]; |
assign vdu_we_i = we; |
364,9 → 451,16
assign zbt_stb_i = zbt_stb; |
`endif |
|
`ifdef DEBUG_TRACE |
assign clk = clk_921600; |
`else |
assign clk = sys_clk; |
`endif |
|
assign io_dat_i = flash_io_arena ? flash_dat_o |
: (vdu_io_arena ? vdu_dat_o |
: (keyb_io_arena ? keyb_dat_o : 16'h0)); |
: (keyb_io_arena ? keyb_dat_o |
: (keyb_io_status ? 16'h10 : 16'h0))); |
assign dat_i = inta ? 16'd9 : (tga ? io_dat_i |
: (vdu_mem_arena ? vdu_dat_o |
: (flash_mem_arena ? flash_dat_o : zbt_dat_o))); |
379,6 → 473,9
(adr[15:1]==15'h01ed && !we); |
assign keyb_io_arena = (adr[15:1]==15'h0030 && !we); |
|
// MS-DOS is reading IO address 0x64 to check the inhibit bit |
assign keyb_io_status = (adr[15:1]==15'h0032 && !we); |
|
assign flash_arena = (!tga & flash_mem_arena) |
| (tga & flash_io_arena); |
assign vdu_arena = (!tga & vdu_mem_arena) |
421,7 → 518,11
: ((tga && stb && cyc && we && adr[15:8]==8'hf1) ? |
dat_o : io_reg ); |
|
`ifndef DEBUG |
`ifdef DEBUG |
// cnt_time |
always @(posedge clk) |
cnt_time <= rst ? 32'h0 : (cnt_time + 32'h1); |
`else |
assign rst = rst_lck; |
`endif |
endmodule |
/trunk/impl/virtex4-ml403ep/syn/ml403.ucf
4,7 → 4,6
NET sys_clk_in_ LOC = AE14; |
NET sys_clk_in_ IOSTANDARD = LVCMOS33; |
|
#NET trx LOC = W1; |
NET sram_clk_ LOC = AF7 ; |
|
#NET sram_flash_addr_[24] LOC = T21; |
115,6 → 114,8
NET butn_ LOC = E7; # N Button |
NET buts_ LOC = A6; # S Button |
|
NET trx_ LOC = W1; |
|
#NET led_[0] LOC = G5; #GPLED0 |
#NET led_[1] LOC = G6; #GPLED1 |
#NET led_[2] LOC = A11; #GPLED2 |
/trunk/impl/virtex4-ml403ep/syn/Makefile
1,4 → 1,4
all: Zet.ace |
all: kotku_ml403.bit |
|
run: tmp/kotku_ml403.bit |
(cd tmp/ && ../../../../bin/ml403 kotku_ml403.bit) |
36,5 → 36,8
tmp/kotku_ml403.bit: tmp/kotku_ml403-par.ncd |
(cd tmp/ && bitgen -w kotku_ml403-par.ncd kotku_ml403.bit) |
|
kotku_ml403.bit: tmp/kotku_ml403.bit |
cp tmp/kotku_ml403.bit /home/zeus/tmp |
|
clean: |
rm -fR Zet.ace tmp/ |
/trunk/impl/virtex4-ml403ep/syn/ila.xco
1,7 → 1,7
############################################################## |
# |
# Xilinx Core Generator version K.39 |
# Date: Fri Nov 7 05:42:19 2008 |
# Date: Sat Feb 28 12:16:13 2009 |
# |
############################################################## |
# |
36,7 → 36,7
# END Select |
# BEGIN Parameters |
CSET component_name=ila |
CSET counter_width_1=Disabled |
CSET counter_width_1=32 |
CSET counter_width_10=Disabled |
CSET counter_width_11=16 |
CSET counter_width_12=Disabled |
79,7 → 79,7
CSET match_type_13=basic |
CSET match_type_14=basic |
CSET match_type_15=basic |
CSET match_type_16=basic |
CSET match_type_16=range |
CSET match_type_2=basic |
CSET match_type_3=basic |
CSET match_type_4=basic |
127,5 → 127,5
CSET use_rpms=true |
# END Parameters |
GENERATE |
# CRC: 1d7360fb |
# CRC: c1a9a9f1 |
|
/trunk/impl/virtex4-ml403ep/dbg/test_serial.v
0,0 → 1,48
|
|
module test_serial ( |
input clk_, |
output trx_ |
); |
|
// Registers and nets |
wire clk_100M; |
wire rst; |
wire clk_921600; |
wire rst2; |
wire ack; |
wire lock; |
wire [19:0] inc_dat; |
reg [19:0] dat; |
|
// Module instantiation |
clocks c0 ( |
.CLKIN_IN (clk_), |
.CLK0_OUT (clk_100M), |
.LOCKED_OUT (lock) |
); |
|
clk_uart clk0 ( |
.clk_100M (clk_100M), |
.rst (rst), |
.clk_921600 (clk_921600), |
.rst2 (rst2) |
); |
|
send_addr ser0 ( |
.trx_ (trx_), |
.wb_clk_i (clk_921600), |
.wb_rst_i (rst2), |
.wb_dat_i (dat), |
.wb_we_i (1'b1), |
.wb_stb_i (1'b1), |
.wb_cyc_i (1'b1), |
.wb_ack_o (ack) |
); |
|
assign rst = !lock; |
assign inc_dat = dat + 20'h1; |
|
always @(posedge clk_921600) |
dat <= rst2 ? 20'h12345 : (ack ? inc_dat : dat); |
endmodule |
/trunk/impl/virtex4-ml403ep/dbg/pc_trace.v
0,0 → 1,85
`timescale 1ns/10ps |
`include "defines.v" |
|
module pc_trace ( |
`ifdef DEBUG |
output reg [ 2:0] old_zet_st, |
output reg [19:0] dat, |
output reg new_pc, |
output reg st, |
output reg stb, |
output ack, |
output [ 4:0] pack, |
output addr_st, |
`endif |
// PAD signals |
output trx_, |
|
input clk, |
input rst, |
input [19:0] pc, |
input [ 2:0] zet_st, |
output reg block |
); |
|
`ifndef DEBUG |
// Registers and nets |
reg [19:0] dat; |
reg [ 2:0] old_zet_st; |
reg new_pc; |
reg st; |
reg stb; |
wire ack; |
`endif |
wire op_st; |
wire rom; |
|
// Module instantiations |
send_addr ser0 ( |
`ifdef DEBUG |
.pack (pack), |
.st (addr_st), |
`endif |
.trx_ (trx_), |
.wb_clk_i (clk), |
.wb_rst_i (rst), |
.wb_dat_i (dat), |
.wb_we_i (stb), |
.wb_stb_i (stb), |
.wb_cyc_i (stb), |
.wb_ack_o (ack) |
); |
|
// Continous assignments |
assign op_st = (zet_st == 3'b0); |
assign rom = pc[19:16]==4'hf || pc[19:16]==4'hc; |
|
// Behaviour |
// old_zet_st |
always @(posedge clk) |
old_zet_st <= rst ? 3'b0 : zet_st; |
|
// new_pc |
always @(posedge clk) |
new_pc <= rst ? 1'b0 |
: (op_st ? (zet_st!=old_zet_st && !rom) : 1'b0); |
|
// block |
always @(posedge clk) |
block <= rst ? 1'b0 |
: (new_pc ? (st & !ack) : (ack ? 1'b0 : block)); |
|
// dat |
always @(posedge clk) |
dat <= rst ? 20'h0 |
: ((new_pc & !st) ? pc : (ack ? pc : dat)); |
|
// stb |
always @(posedge clk) |
stb <= rst ? 1'b0 : (ack ? 1'b0 : (st | new_pc)); |
|
// st |
always @(posedge clk) |
st <= rst ? 1'b0 |
: (st ? (ack ? (new_pc | block) : 1'b1) : new_pc); |
endmodule |
/trunk/impl/virtex4-ml403ep/dbg/sim_addr.v
0,0 → 1,46
`timescale 1ns/10ps |
|
module sim_addr; |
|
// Registers and nets |
reg clk_100M; |
reg rst; |
reg stb; |
wire clk_921600; |
wire trx_; |
wire rst2; |
wire ack; |
|
// Module instantiation |
clk_uart clk0 ( |
.clk_100M (clk_100M), |
.rst (rst), |
.clk_921600 (clk_921600), |
.rst2 (rst2) |
); |
|
send_addr ser0 ( |
.trx_ (trx_), |
.wb_clk_i (clk_921600), |
.wb_rst_i (rst2), |
.wb_dat_i (20'h4fb31), |
.wb_we_i (1'b1), |
.wb_stb_i (stb), |
.wb_cyc_i (1'b1), |
.wb_ack_o (ack) |
); |
|
// Behaviour |
initial |
begin |
stb <= 1'b1; |
clk_100M <= 1'b0; |
rst <= 1'b1; |
#400 rst <= 1'b0; |
#33635 stb <= 1'b0; |
#10000 stb <= 1'b1; |
end |
|
// clk_50M |
always #5 clk_100M <= !clk_100M; |
endmodule |
/trunk/impl/virtex4-ml403ep/dbg/send_addr.v
0,0 → 1,75
`timescale 1ns/10ps |
`include "defines.v" |
|
module send_addr ( |
`ifdef DEBUG |
output reg [ 4:0] pack, |
output reg st, |
`endif |
// Serial pad signal |
output trx_, |
|
// Wishbone slave interface |
input wb_clk_i, |
input wb_rst_i, |
input [19:0] wb_dat_i, |
input wb_we_i, |
input wb_stb_i, |
input wb_cyc_i, |
output wb_ack_o |
); |
|
// Registers and nets |
`ifndef DEBUG |
reg [4:0] pack; |
reg st; |
`endif |
wire op; |
wire start; |
wire sack; |
wire [7:0] dat; |
wire [7:0] b0, b1, b2, b3, b4; |
|
// Module instantiation |
send_serial ss0 ( |
.trx_ (trx_), |
|
.wb_clk_i (wb_clk_i), |
.wb_rst_i (wb_rst_i), |
.wb_dat_i (dat), |
.wb_we_i (wb_we_i), |
.wb_stb_i (wb_stb_i), |
.wb_cyc_i (wb_cyc_i), |
.wb_ack_o (sack) |
); |
|
// Continuous assignments |
assign op = wb_we_i & wb_stb_i & wb_cyc_i; |
assign start = !st & op; |
assign wb_ack_o = st & sack & pack[4]; |
|
assign dat = st & pack[0] ? |
(pack[1] ? (pack[2] ? (pack[3] ? (pack[4] ? 8'h0a : b0) |
: b1) : b2) : b3) : b4; |
|
assign b0 = { 1'b0, ascii(wb_dat_i[ 3: 0]) }; |
assign b1 = { 1'b0, ascii(wb_dat_i[ 7: 4]) }; |
assign b2 = { 1'b0, ascii(wb_dat_i[11: 8]) }; |
assign b3 = { 1'b0, ascii(wb_dat_i[15:12]) }; |
assign b4 = { 1'b0, ascii(wb_dat_i[19:16]) }; |
|
// Behaviour |
// pack |
always @(posedge wb_clk_i) |
pack <= wb_rst_i ? 5'b0 : (start ? 5'b0 |
: (st ? (sack ? { pack[3:0], 1'b1 } : pack) : 5'b0)); |
|
// st |
always @(posedge wb_clk_i) |
st <= wb_rst_i ? 1'b0 : (st ? !wb_ack_o : op); |
|
function [6:0] ascii(input [3:0] num); |
if (num <= 4'd9) ascii = 7'h30 + num; |
else ascii = 7'd87 + num; |
endfunction |
endmodule |
/trunk/impl/virtex4-ml403ep/dbg/clk_uart.v
0,0 → 1,34
/* |
* Phase accumulator clock: |
* Fo = Fc * N / 2^bits |
* here N: 154619 and bits: 24 |
*/ |
|
module clk_uart ( |
input clk_100M, |
input rst, |
output clk_921600, |
output rst2 |
); |
|
// Registers |
reg [25:0] cnt; |
reg [ 2:0] init; |
|
// Continuous assignments |
assign clk_921600 = cnt[25]; |
assign rst2 = init[2]; |
|
// Behaviour |
// cnt |
always @(posedge clk_100M) |
cnt <= rst ? 26'd0 : cnt + 26'd154619; |
|
// init[0] |
always @(posedge clk_100M) |
init[0] <= rst ? 1'b1 : (clk_921600 ? 1'b0 : init[0]); |
|
// init[2:1] |
always @(posedge clk_921600) |
init[2:1] <= init[0] ? 2'b11 : init[1:0]; |
endmodule |
/trunk/impl/virtex4-ml403ep/dbg/sim_serial.v
0,0 → 1,46
`timescale 1ns/10ps |
|
module sim_serial; |
|
// Registers and nets |
reg clk_100M; |
reg rst; |
reg stb; |
wire clk_921600; |
wire trx_; |
wire rst2; |
wire ack; |
|
// Module instantiation |
clk_uart clk0 ( |
.clk_100M (clk_100M), |
.rst (rst), |
.clk_921600 (clk_921600), |
.rst2 (rst2) |
); |
|
send_serial ser0 ( |
.trx_ (trx_), |
.wb_clk_i (clk_921600), |
.wb_rst_i (rst2), |
.wb_dat_i (8'h4b), |
.wb_we_i (1'b1), |
.wb_stb_i (stb), |
.wb_cyc_i (1'b1), |
.wb_ack_o (ack) |
); |
|
// Behaviour |
initial |
begin |
stb <= 1'b1; |
clk_100M <= 1'b0; |
rst <= 1'b1; |
#400 rst <= 1'b0; |
#95490 stb <= 1'b0; |
#40000 stb <= 1'b1; |
end |
|
// clk_50M |
always #5 clk_100M <= !clk_100M; |
endmodule |
/trunk/impl/virtex4-ml403ep/dbg/send_serial.v
0,0 → 1,44
|
module send_serial ( |
// Serial pad signal |
output reg trx_, |
|
// Wishbone slave interface |
input wb_clk_i, |
input wb_rst_i, |
input [7:0] wb_dat_i, |
input wb_we_i, |
input wb_stb_i, |
input wb_cyc_i, |
output reg wb_ack_o |
); |
|
// Registers and nets |
wire op; |
wire start; |
reg [8:0] tr; |
reg st; |
reg [7:0] sft; |
|
// Continuous assignments |
assign op = wb_we_i & wb_stb_i & wb_cyc_i; |
assign start = !st & op; |
|
// Behaviour |
// trx_ |
always @(posedge wb_clk_i) |
trx_ <= wb_rst_i ? 1'b1 : (start ? 1'b0 : tr[0]); |
|
// tr |
always @(posedge wb_clk_i) |
tr <= wb_rst_i ? 9'h1ff |
: { 1'b1, (start ? wb_dat_i : tr[8:1]) }; |
|
// sft, wb_ack_o |
always @(posedge wb_clk_i) |
{ sft, wb_ack_o } <= wb_rst_i ? 9'h0 : { start, sft }; |
|
// st |
always @(posedge wb_clk_i) |
st <= wb_rst_i ? 1'b0 : (st ? !wb_ack_o : op); |
endmodule |
/trunk/tests/.bochsrc
1,4 → 1,4
romimage: file=21_async.out |
romimage: file=00_test2.out |
cpu: count=1, ips=10000000, reset_on_triple_fault=1 |
megs: 2 |
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest |
/trunk/tests/Makefile
31,7 → 31,7
# paste -d\\ hd.img.rtl $< >../../impl/virtex4-ml403ep/sim/$@ |
|
%.ml403: %.rom |
hexdump -v -e '4/1 "%02X"' -e '"\n"' $< > ../../impl/virtex4-ml403ep/sim/$@ |
hexdump -v -e '4/1 "%02X"' -e '"\n"' $< > ../impl/virtex4-ml403ep/sim/$@ |
|
%.fout: %.out hd.img.rtl |
for i in $$(seq 32768); do echo FFFF; done >$@ |
/trunk/soc/timer.v
0,0 → 1,36
module timer ( |
// Wishbone slave interface |
input wb_clk_i, |
input wb_rst_i, |
output reg wb_tgc_o, // intr |
input wb_tgc_i // inta |
); |
|
// Registers and nets |
reg [17:0] cnt; |
reg old_clk2; |
reg pulse; |
wire clk2; |
|
// Continuous assignments |
assign clk2 = cnt[17]; |
|
// Behaviour |
// cnt |
always @(posedge wb_clk_i) |
cnt <= wb_rst_i ? 18'h00 : (cnt + 18'h1); |
|
// old_clk2 |
always @(posedge wb_clk_i) |
old_clk2 <= wb_rst_i ? 1'b0 : clk2; |
|
// pulse |
always @(posedge wb_clk_i) |
pulse <= wb_rst_i ? 1'b0 : (clk2!=old_clk2); |
|
// intr |
always @(posedge wb_clk_i) |
wb_tgc_o <= wb_rst_i ? 1'b0 |
: ((pulse & !wb_tgc_i) ? 1'b1 |
: (wb_tgc_o ? !wb_tgc_i : 1'b0)); |
endmodule |
/trunk/soc/bios/rombios.c
11,6 → 11,8
|
#include "rombios.h" |
|
#define BX_CPU 0 |
|
/* model byte 0xFC = AT */ |
#define SYS_MODEL_ID 0xFC |
|
960,7 → 962,7
} |
} |
|
static char bios_svn_version_string[] = "$Revision: 1.10 $ $Date: 2009-02-19 19:06:56 $"; |
static char bios_svn_version_string[] = "$Revision: 1.11 $ $Date: 2009-03-02 01:02:32 $"; |
|
//-------------------------------------------------------------------------- |
// print_bios_banner |
2101,7 → 2103,7
|
;; Keyboard |
SET_INT_VECTOR(0x09, #0xF000, #int09_handler) |
;SET_INT_VECTOR(0x16, #0xF000, #int16_handler) |
SET_INT_VECTOR(0x16, #0xF000, #int16_handler) |
|
xor ax, ax |
mov ds, ax |
2113,7 → 2115,6
mov al, #0x10 |
mov 0x0496, al /* keyboard status flags 3 */ |
|
|
/* keyboard head of buffer pointer */ |
mov bx, #0x001E |
mov 0x041A, bx |
2186,8 → 2187,10
push bx |
push sp |
mov bx, sp |
add [bx], #10 |
mov bx, [bx+2] |
sseg |
add [bx], #10 |
sseg |
mov bx, [bx+2] |
push bp |
push si |
push di |
2283,9 → 2286,9
int09_handler: |
cli |
push ax |
|
in al, #0x60 ;;read key from keyboard controller |
sti |
|
push ds |
;pusha ; we do this instead: |
|
2295,8 → 2298,10
push bx |
push sp |
mov bx, sp |
add [bx], #10 |
mov bx, [bx+2] |
sseg |
add [bx], #10 |
sseg |
mov bx, [bx+2] |
push bp |
push si |
push di |
2325,7 → 2330,6
mov bx, #0xf000 |
mov ds, bx |
call _int09_function |
|
int09_done: |
; popa ; we do this instead: |
pop di |
2338,8 → 2342,8
pop ax |
|
pop ds |
|
cli |
|
pop ax |
iret |
|
/trunk/soc/bios/vgabios.c
26,6 → 26,9
static void biosfn_set_cursor_pos(); |
static void biosfn_get_cursor_pos(); |
static void biosfn_scroll(); |
static void biosfn_read_char_attr(); |
static void biosfn_write_char_attr(); |
static void biosfn_write_char_only(); |
static void biosfn_write_teletype(); |
static void biosfn_load_text_8_16_pat(); |
static void biosfn_write_string(); |
173,8 → 176,10
push bx |
push sp |
mov bx, sp |
add [bx], #10 |
mov bx, [bx+2] |
sseg |
add [bx], #10 |
sseg |
mov bx, [bx+2] |
push bp |
push si |
push di |
234,7 → 239,7
|
#if defined(USE_BX_INFO) || defined(DEBUG) |
msg_vga_init: |
.ascii "VGABios $Id: vgabios.c,v 1.7 2009-02-06 03:48:27 zeus Exp $" |
.ascii "VGABios $Id: vgabios.c,v 1.8 2009-03-02 01:02:33 zeus Exp $" |
.byte 0x0d,0x0a,0x00 |
#endif |
ASM_END |
416,6 → 421,15
case 0x07: |
biosfn_scroll(GET_AL(),GET_BH(),GET_CH(),GET_CL(),GET_DH(),GET_DL(),0xFF,SCROLL_DOWN); |
break; |
case 0x08: |
biosfn_read_char_attr(GET_BH(),&AX); |
break; |
case 0x09: |
biosfn_write_char_attr(GET_AL(),GET_BH(),GET_BL(),CX); |
break; |
case 0x0A: |
biosfn_write_char_only(GET_AL(),GET_BH(),GET_BL(),CX); |
break; |
case 0x0E: |
// Ralf Brown Interrupt list is WRONG on bh(page) |
// We do output only on the current page ! |
738,6 → 752,91
} |
|
// -------------------------------------------------------------------------------------------- |
static void biosfn_read_char_attr (page,car) |
Bit8u page;Bit16u *car; |
{Bit16u ss=get_SS(); |
Bit8u xcurs,ycurs,mode,line; |
Bit16u nbcols,nbrows,address; |
Bit16u cursor,dummy; |
|
// Get the mode |
mode=read_byte(BIOSMEM_SEG,BIOSMEM_CURRENT_MODE); |
line=find_vga_entry(mode); |
if(line==0xFF)return; |
|
// Get the cursor pos for the page |
biosfn_get_cursor_pos(page,&dummy,&cursor); |
xcurs=cursor&0x00ff;ycurs=(cursor&0xff00)>>8; |
|
// Get the dimensions |
nbrows=read_byte(BIOSMEM_SEG,BIOSMEM_NB_ROWS)+1; |
nbcols=read_word(BIOSMEM_SEG,BIOSMEM_NB_COLS); |
|
// Compute the address |
address=SCREEN_MEM_START(nbcols,nbrows,page)+(xcurs+ycurs*nbcols)*2; |
|
write_word(ss,car,read_word(vga_modes[line].sstart,address)); |
} |
|
// -------------------------------------------------------------------------------------------- |
static void biosfn_write_char_attr (car,page,attr,count) |
Bit8u car;Bit8u page;Bit8u attr;Bit16u count; |
{ |
Bit8u cheight,xcurs,ycurs,mode,line,bpp; |
Bit16u nbcols,nbrows,address; |
Bit16u cursor,dummy; |
|
// Get the mode |
mode=read_byte(BIOSMEM_SEG,BIOSMEM_CURRENT_MODE); |
line=find_vga_entry(mode); |
if(line==0xFF)return; |
|
// Get the cursor pos for the page |
biosfn_get_cursor_pos(page,&dummy,&cursor); |
xcurs=cursor&0x00ff;ycurs=(cursor&0xff00)>>8; |
|
// Get the dimensions |
nbrows=read_byte(BIOSMEM_SEG,BIOSMEM_NB_ROWS)+1; |
nbcols=read_word(BIOSMEM_SEG,BIOSMEM_NB_COLS); |
|
// Compute the address |
address=SCREEN_MEM_START(nbcols,nbrows,page)+(xcurs+ycurs*nbcols)*2; |
|
dummy=((Bit16u)attr<<8)+car; |
memsetw(vga_modes[line].sstart,address,dummy,count); |
} |
|
// -------------------------------------------------------------------------------------------- |
static void biosfn_write_char_only (car,page,attr,count) |
Bit8u car;Bit8u page;Bit8u attr;Bit16u count; |
{ |
Bit8u cheight,xcurs,ycurs,mode,line,bpp; |
Bit16u nbcols,nbrows,address; |
Bit16u cursor,dummy; |
|
// Get the mode |
mode=read_byte(BIOSMEM_SEG,BIOSMEM_CURRENT_MODE); |
line=find_vga_entry(mode); |
if(line==0xFF)return; |
|
// Get the cursor pos for the page |
biosfn_get_cursor_pos(page,&dummy,&cursor); |
xcurs=cursor&0x00ff;ycurs=(cursor&0xff00)>>8; |
|
// Get the dimensions |
nbrows=read_byte(BIOSMEM_SEG,BIOSMEM_NB_ROWS)+1; |
nbcols=read_word(BIOSMEM_SEG,BIOSMEM_NB_COLS); |
|
// Compute the address |
address=SCREEN_MEM_START(nbcols,nbrows,page)+(xcurs+ycurs*nbcols)*2; |
|
while(count-->0) |
{write_byte(vga_modes[line].sstart,address,car); |
address+=2; |
} |
} |
|
// -------------------------------------------------------------------------------------------- |
static void biosfn_write_teletype (car, page, attr, flag) |
Bit8u car;Bit8u page;Bit8u attr;Bit8u flag; |
{// flag = WITH_ATTR / NO_ATTR |
/trunk/src/tools/read-addr.c
0,0 → 1,58
#include <stdio.h> |
#include <sys/stat.h> |
#include <fcntl.h> |
#include <string.h> |
|
int main (int argc, char *argv[]) |
{ |
int fd, n; |
char buf[4096]; |
char *p, *q; |
char s1[6], s2[6]; |
|
if (argc != 2) fprintf(stderr, "Syntax: %s tracefile\n", |
argv[0]); |
|
fd=open(argv[1], O_RDONLY); |
if(fd < 0) |
{ |
fprintf(stderr, "Error opening file\n"); |
return 1; |
} |
|
strcpy (s1, ""); |
strcpy (s2, ""); |
|
while (1) |
{ |
n=read(fd, &buf, 4096); |
if (n<11) break; |
|
p=buf; |
q=&buf[n-11]; |
while (1) |
{ |
if (p = strstr(p, "[0x")) |
{ |
// String found |
if (p > q) break; |
p+=6; |
strncpy (s2, p, 5); |
if (strcmp (s1, s2)) |
{ |
// They are different |
printf ("%s\n", s2); |
strcpy (s1, s2); |
} |
} |
else break; |
} |
|
if (p > q) lseek(fd, (off_t) -10, SEEK_CUR); |
if (buf[n-1]=='[') lseek(fd, (off_t) -1, SEEK_CUR); |
else if (buf[n-2]=='[' && buf[n-1]=='0') |
lseek(fd, (off_t) -2, SEEK_CUR); |
} |
|
return 0; |
} |