So next problem, how the heck to program the proper patch in verilog :shrug:
The compiler is moaning about
Code: Select all
assign D[7:0] = BUSEN_IRQ ? 8'bzzzzzzzz : data;
Code: Select all
ERROR:HDLCompilers:73 - "rtl/main_top.v" line 551 Illegal operand of conditional operator '?:'
ERROR:HDLCompilers:185 - "rtl/main_top.v" line 551 Illegal right hand side of continuous assign
ERROR:HDLCompilers:106 - "rtl/main_top.v" line 560 Illegal left hand side of nonblocking assignment
My patch code is now this.
Code: Select all
reg data[7:0] ;
wire BUSEN_IRQ;
localparam PATCH_ADDRESS = 30'hffFFFA01;
wire BUSEN_INTREQR = (A[29:0] != PATCH_ADDRESS) | AS30 | ~RW30 | ~IDEINT ; //
assign D[7:0] = BUSEN_IRQ ? 8'bzzzzzzzz : data;
FDCP FF_IRQ( .D( BUSEN_INTREQR ), .C( CLK7M ), .PRE( 1'b0 ), .CLR( 1'b0 ), .Q(BUSEN_IRQ ) );
always @(posedge CLK100M, negedge AS30) begin
if (BUSEN_IRQ == 1'b0) begin
data <= D[7:0];
data[5] <= 1'b0; //patch bit 5
end
end
The idea being that the databus is always copied into "data" register. Then if we hit the patch address, it will have a single CLK7 delay, then the output of the FF_IRQ will go low. That's switch then enables the bus isolators.Next up when bus isolator ( BUSEN_IRQ ) Is low, it then copies the data registers back to the actual Databus and flips bit 5.
Not really sure how to tri-state the databus only when BUSEN_IRQ is enabled. But that is the line it is complaining about..
Can anyone tell me if the code even looks like it will do what it is supposed to do ?? :lol: #n00b #dumbass #clueless.