Line 23... |
Line 23... |
input wire nReset,
|
input wire nReset,
|
input wire clk,
|
input wire clk,
|
input wire [DIVIDER_WIDTH-1:0] clkPerCycle,
|
input wire [DIVIDER_WIDTH-1:0] clkPerCycle,
|
input wire [7:0] dataIn,
|
input wire [7:0] dataIn,
|
input wire nWeDataIn,
|
input wire nWeDataIn,
|
|
input wire [CLOCK_PER_BIT_WIDTH-1:0] clocksPerBit,
|
output wire [7:0] dataOut,
|
output wire [7:0] dataOut,
|
input wire nCsDataOut,
|
input wire nCsDataOut,
|
output wire [7:0] statusOut,
|
output wire [7:0] statusOut,
|
input wire nCsStatusOut,
|
input wire nCsStatusOut,
|
input wire serialIn,
|
input wire serialIn,
|
output wire serialOut,
|
output wire serialOut,
|
output wire comClk
|
output wire comClk
|
);
|
);
|
//parameters to override
|
//parameters to override
|
parameter DIVIDER_WIDTH = 1;
|
parameter DIVIDER_WIDTH = 1;
|
|
parameter CLOCK_PER_BIT_WIDTH = 13; //allow to support default speed of ISO7816
|
|
|
reg [7:0] dataReg;
|
reg [7:0] dataReg;
|
|
|
// Inputs
|
// Inputs
|
wire [7:0] txData;
|
wire [7:0] txData;
|
wire [12:0] clocksPerBit;
|
//wire [12:0] clocksPerBit;
|
wire stopBit2=1;
|
wire stopBit2=1;
|
wire oddParity=0; //if 1, parity bit is such that data+parity have an odd number of 1
|
wire oddParity=0; //if 1, parity bit is such that data+parity have an odd number of 1
|
wire msbFirst=0; //if 1, bits will be send in the order startBit, b7, b6, b5...b0, parity
|
wire msbFirst=0; //if 1, bits will be send in the order startBit, b7, b6, b5...b0, parity
|
reg txPending;
|
reg txPending;
|
wire ackFlags;
|
wire ackFlags;
|
Line 62... |
Line 64... |
wire rxFlagsSet = dataOutReadyFlag | overrunErrorFlag | frameErrorFlag;
|
wire rxFlagsSet = dataOutReadyFlag | overrunErrorFlag | frameErrorFlag;
|
reg bufferFull;
|
reg bufferFull;
|
reg [1:0] flagsReg;
|
reg [1:0] flagsReg;
|
|
|
assign txData = dataReg;
|
assign txData = dataReg;
|
assign clocksPerBit = 7;
|
//assign clocksPerBit = 7;
|
|
|
assign dataOut=dataReg;
|
assign dataOut=dataReg;
|
assign statusOut[7:0]={txRun, txPending, rxRun, rxStartBit, isTx, flagsReg, bufferFull};
|
assign statusOut[7:0]={txRun, txPending, rxRun, rxStartBit, isTx, flagsReg, bufferFull};
|
|
|
reg waitTxFull0;//internal reg for managing bufferFull bit in Tx
|
reg waitTxFull0;//internal reg for managing bufferFull bit in Tx
|
Line 103... |
Line 105... |
waitTxFull0 <= txFull;
|
waitTxFull0 <= txFull;
|
end
|
end
|
end
|
end
|
end
|
end
|
|
|
BasicHalfDuplexUart #(.DIVIDER_WIDTH(DIVIDER_WIDTH))
|
BasicHalfDuplexUart #(
|
|
.DIVIDER_WIDTH(DIVIDER_WIDTH),
|
|
.CLOCK_PER_BIT_WIDTH(CLOCK_PER_BIT_WIDTH)
|
|
)
|
uart (
|
uart (
|
.rxData(rxData),
|
.rxData(rxData),
|
.overrunErrorFlag(overrunErrorFlag),
|
.overrunErrorFlag(overrunErrorFlag),
|
.dataOutReadyFlag(dataOutReadyFlag),
|
.dataOutReadyFlag(dataOutReadyFlag),
|
.frameErrorFlag(frameErrorFlag),
|
.frameErrorFlag(frameErrorFlag),
|