Verilog Hjælp

  • Thread starter maheshkuruganti
  • Start date
M

maheshkuruganti

Guest
HI,
Jeg har brug for at tildele 6 registre deres værdi i løbet af en seriel interface, som jeg er ved hjælp af en UART.CMOSExod Micro UART.I mig ude af stand til at afgøre, om mit Logic er korrekt, så jeg vil gerne vide, om følgende kode vil tjene mit formål.

Code:

modul Input (

input CLK,

input RxD,

output [31:0] FreqW,

output [31:0] PW,

output [31:0] PW2,

output [31:0] Delay,

output [31:0] Delay2

);////////////////////////////////////////////////// ////////////////////////////////

/ / Parameter erklæringen. / /

////////////////////////////////////////////////// ////////////////////////////////

parameter Increment1K = 42949;

parameter Increment1M = 42949672;

parameter IDLE = 6'b000001;

parameter ADR = 6'b000010;

parameter D0 = 6'b000100;

parameter D1 = 6'b001000;

parameter D2 = 6'b010000;

parameter D3 = 6'b100000;////////////////////////////////////////////////// ////////////////////////////////

/ / Fo og Wire erklæringen. / /

////////////////////////////////////////////////// ////////////////////////////////

reg [31:0] FrequencyWord = Increment1M * 2;

reg [31:0] Pulse_Width = 25;

reg [31:0] Pulse_Width2;

reg [31:0] Delay_Hold = 32'h00000005;

reg [31:0] Delay_Hold2;

reg [31:0] Data;

/ / Byte Counter.

reg [5:0] ByteCounter;

/ / Data Edge Detector

reg [1:0] DataRdy;

wire DataReady;

/ / Afkod Adresse

reg [7:0] Adr;

/ / UART Wires.

wire RxD_data_ready;

wire [7:0] RxD_data;

wire Baud_Clk;

////////////////////////////////////////////////// ////////////////////////////////

/ / USART Receiver og dekoder. / /

////////////////////////////////////////////////// ///////////////////////////////// / Instantiate modulet

u_rec Receiver (

. sys_rst_l (1),

. sys_clk (Baud_Clk),

. uart_dataH (RxD),

. rec_dataH (RxD_data),

. rec_readyH (RxD_data_ready)

);/ / Instantiate modulet

baud Baud_Generator (

. sys_clk (CLK),

. sys_rst_l (1),

. baud_clk (Baud_Clk)

);////////////////////////////////////////////////// ////////////////////////////////

/ / Data Decoder eller Parser / /

////////////////////////////////////////////////// ///////////////////////////////// / Shift Register at lagre hvis Data Ready stat.

altid @ (posedge CLK)

DataRdy <= (DataRdy [0], RxD_data_ready);/ / Datatilgængeligheden Bit.

tildele DataReady = (DataRdy == 2'b01)?
1'b1: 1'b0;altid @ (posedge CLK)

begynd

if (DataReady)

begynd

sagen (ByteCounter)

IDLE: ByteCounter = ADR;

ADR: ByteCounter = D0;

D0: ByteCounter = D1;

D1: ByteCounter = D2;

D2: ByteCounter = D3;

D3: ByteCounter = IDLE;

Standard: ByteCounter = IDLE;

endcase

ende

endealtid @ (posedge CLK)

begynd

if (ByteCounter == ADR)

Adr = RxD_data;

ellers hvis (ByteCounter == D0)

Data = (Data [31:8], RxD_data);

ellers hvis (ByteCounter == D1)

Data = (Data [31:16], RxD_data, Data [7:0]);

ellers hvis (ByteCounter == D2)

Data = (Data [31:24], RxD_data, Data [15:0]);

ellers hvis (ByteCounter == D3)

Data = (RxD_data, Data [23:0]);

endealtid @ (posedge CLK)

begynd

sagen (Adr)

8'h41: FrequencyWord = Data;

8'h42: Pulse_Width = Data;

8'h43: Pulse_Width2 = Data;

8'h44: Delay_Hold = Data;

8'h45: Delay_Hold2 = Data;

Standard: FrequencyWord = FrequencyWord;

endcase

endetildele FreqW = FrequencyWord;

tildele PW = Pulse_Width;

tildele PW2 = Pulse_Width2;

tildele Delay = Delay_Hold;

tildele Delay2 = Delay_Hold2;endmodule

 

Welcome to EDABoard.com

Sponsor

Back
Top