Develop and Download Open Source Software

Browse Subversion Repository

Contents of /trunk/Toriya/txdriver.v

Parent Directory Parent Directory | Revision Log Revision Log


Revision 118 - (show annotations) (download)
Wed Apr 11 04:55:06 2007 UTC (17 years, 1 month ago) by chapuni
File size: 1870 byte(s)
「本物の鳥屋」ついに公開です。
たぶん 2005/09 頃のものです。
もしかするとあと一度ほど、改良するかもね。
1 ////////////////////////////////////////////////////////////////
2 // Serial TxD - 単純なシリアル送信
3 // author: 中村 巧 <webmaster@chapuni.com>
4 // $Id$
5
6 module txdriver(clk, rst,
7 TxD, CTS,
8 we, d, rdy);
9 input clk; // x1
10 input rst;
11 output TxD; // 送信データ
12 input CTS; // 送信データ要求(負論理)
13
14 input we; // d にデータを用意してアサートせよ。
15 input [7:0] d; // data byte
16 output rdy; // データを取り込めるときにアサートされる。
17
18 // フレームキューが空の状態は、これである。
19 // このとき、1が送信され続ける。
20 parameter EMPTY = 10'b0000000001;
21
22 // フレーム(10ビット)
23 reg [9:0] q;
24
25 // 常にフレームのLSBが送信され続ける。
26 // 何もしないときは、1 でドライブしておくべきである。
27 assign TxD = q[0];
28
29 // rdyは、ストップビットを送ってる最中にアサートされる。
30 assign rdy = (q == EMPTY || q[9:1] == 8'b00000001);
31
32 // ステート変数
33 // それぞれ排他的な条件である。
34 wire empty;
35 wire waitcts;
36
37 // キューにデータを取り込み可能な状態
38 // キューのシフトは行われない。
39 assign empty = (q == EMPTY);
40
41 // 送信許可が下りるのを待ってる状態
42 // このとき、q[8:1]は、送信待ちデータになっている。
43 assign waitcts = (q[9] && q[0]);
44
45 always @(posedge clk or posedge rst)
46 if (rst)
47 begin
48 q <= EMPTY;
49 end
50 else if (empty)
51 begin
52 // データがセットされるときは、ストップビットを立てておく
53 // CTSに応じてスタートビットがセットされる
54 if (we)
55 q <= {1'b1, d, CTS};
56 // CTS=1のときは、waitctsステートに移る
57 // CTS=0のときは、txbitsステートに移る
58 end
59 else if (waitcts)
60 begin
61 // CTS, 送信許可待ちの状態
62 // CTS=0になったら自動的にtxbitsステートに
63 // 移り、送信動作が開始される。
64 q[0] <= CTS; // start bit
65 end
66 else
67 begin
68 // txbits - ストップビット(番人でもある)に突き当たるまで
69 // キューをシフトする。キューのLSBはTxDに直結している
70 // ので、送信が自動的に行われる。
71 // MSBから0を充填していくので、ストップビットに
72 // 突き当たったときに自動的にemptyステートに移行する。
73 q <= {1'b0, q[9:1]};
74 end
75
76 endmodule

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Rev URL

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26