Stap 2: Het creëren van de zenderdeel 1
De zender heeft de volgende ingangen en uitgangen:
- input clk (klok van een 50 MHz)
- input reset (actieve hoge reset signaal)
- input zenden (actieve laag signaal te laten de module weet om nieuwe gegevens te laden)
- invoer (8-bit waarde te sturen op signaal doorgeeft)
- uitvoer Tx (de draad te zenden op)
De
Eerst implementeren we de scheidingslijn klok als een teller. Bij 50 MHz, een 9600 baud klok kan gegenereerd worden met een teller die elke 5207 terugstelt klok cycli. Het blok van de update staat met ingebouwde shifter ziet er zo uit:
always @ (posedge(clk))begin if (reset) begin state <= 0; counter <= 0; bitcounter <= 0; end else begin counter <= counter + 1; if (counter >= 5207) //baud of 9600 at 50MHz clk begin state <= nextstate; counter <= 0; if (load) rightshiftreg <= {1'b1, ^data, data, 1'b0}; if (clear) bitcounter <= 0; if (shift) begin rightshiftreg <= rightshiftreg >> 1; bitcounter <= bitcounter + 1; end end end end