/**************************************************** ?????????
?* ??Engineer ?????: ??夢翼師兄
?* ??QQ ????????????: ??761664056
?* ??The module function:三態(tài)門模塊
*****************************************************/
00??module?three_state(?
01??????????????????????????//系統(tǒng)輸入
02??????????????????????????clk,//系統(tǒng)50M輸入
03??????????????????????????rst_n,//低電平復位信號
04??????????????????????????data_buf,
05??????????????????????????//系統(tǒng)輸出
06??????????????????????????sda//三態(tài)總線
07?????????????????????);
08??//-------------------系統(tǒng)輸入-------------------
09??input?clk;//系統(tǒng)50M輸入
10??input?rst_n;//低電平復位信號
11??input?data_buf;//待傳輸數(shù)據(jù)
12??//-------------------系統(tǒng)輸出-------------------
13??inout?sda;//三態(tài)總線
14??//------------------寄存器定義------------------
15??reg?flag;//三態(tài)門開關定義
16??reg?[10:0]counter;//計數(shù)器定義
17??//------------------三態(tài)門賦值------------------
18??assign?sda=(flag==1)?data_buf:1'bz;
19??//----------------開關控制計數(shù)器----------------
20??always@(posedge?clk or?negedge?rst_n)
21??????begin
22??????????if(!rst_n)
23??????????????begin
24??????????????????counter<=0;//計數(shù)器復位
25??????????????end?
26??????????else?
27??????????????begin
28??????????????????if(counter<25)//計數(shù)器范圍
29??????????????????????counter<=counter 1;//計數(shù)器累加
30??????????????????else?
31??????????????????????counter<=0;//計數(shù)器清零
32??????????????end?
33??????end
34??//----------------開關/數(shù)據(jù)控制-----------------
35??always@(posedge?clk or?negedge?rst_n)
36??????begin
37??????????if(!rst_n)
38??????????????begin
39??????????????????flag<=0;//開關關閉
40??????????????end
41??????????else
42??????????????begin
43??????????????????if(counter==25)
44??????????????????????flag<=~flag;//開關信號翻轉
45??????????????end
46??????end?
47??endmodule
|