Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- `timescale 1ns / 1ps
- //////////////////////////////////////////////////////////////////////////////////
- // Company:
- // Engineer: Visnovszky Lilla
- //
- // Create Date: 11:31:51 10/25/2014
- // Design Name:
- // Module Name: uart
- // Project Name: uart
- // Target Devices:
- // Tool versions:
- // Description:
- //
- // Dependencies:
- //
- // Revision:
- // Revision 0.01 - File Created
- // Additional Comments:
- //
- //////////////////////////////////////////////////////////////////////////////////
- module uart( //be- és kimenetek a mérési útmutató alapján
- input clk,
- input rst,
- input [3:0] bcd0, //a kétjegyű szám alsó helyiértéke
- input [3:0] bcd1, //a kétjegyű szám felső helyiértéke
- output tx_out
- );
- reg [32:0] tx_shr;// 3 karakter->3*11 hosszúságú tároló regiszter
- reg [5:0] tx_cntr; // az átviteli ciklus számlálója ?????????????????
- wire tx_en; // órajel engedélyező jel, 57600 bps átviteli sebességhez
- reg [8:0] oszto;//órajel osztó számláló regisztere, 278->2^9->9 bit kell
- //tx_en előállítása 57600 bps sebességhez:
- always@(posedge clk)
- if(tx_en|rst) //az rst jel ezt a számlálót is reszeteli
- oszto<=0;
- else oszto<=oszto+1;
- // osztás a feladat alapján:
- //assign tx_en=(oszto==278);
- //osztás a szimulációhoz:
- assign tx_en=(oszto==1);
- // tx_cntr ciklusszámláló beállítása
- always@(posedge clk)
- if(rst) //rst jel esetén reszetel
- tx_cntr<=32;
- else if(tx_en) //engedélyező jel estén ha a számláló elérte a 0-t, akkor betölti a 32-t, és újraszámol????
- if(tx_cntr==0) tx_cntr<=32;
- else tx_cntr<=tx_cntr-1;// egyébként pedig tovább számol lefelé
- // shift regiszter felöltése
- always@(posedge clk)
- begin
- // rst hatására a shift regiszterbe csupa 1-est töltünk?????high???
- if(rst)
- tx_shr<=33'b1111_1111_1111_1111_1111_1111_1111_1111_1;
- if(tx_en)
- if(tx_cntr==0)// ha a tx_cntr ciklusszámláló 0, akkor feltöltjük a a shift regisztert
- //3 karakter: 1 startbit, 8 adatbit(2 ASCII kód+kocsi-vissza(0x0d)karakter),(LSB-vel kezdünk), 1 paritásbit(XOR művelet segítségével) és 1 stop bit
- tx_shr<={1'b0, bcd0[0], bcd0[1], bcd0[2], bcd0[3], 4'b1100, ^bcd0,1'b1,
- 1'b0, bcd1[0], bcd1[1], bcd1[2], bcd1[3], 4'b1100, ^bcd1,1'b1,
- 1'b0,8'b10110000, ^8'h0d, 1'b1};//kocsi-vissza: decimális 13?????????????????
- //ha nem 0 a számláló, akkor léptetjük a shift-regisztert
- else tx_shr<={tx_shr[31:0],tx_shr[32]};
- end
- assign tx_out=tx_shr[32];
- endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement