FPGA 18 實驗綜合13 RTC實時時鐘

2021-10-04 01:54:31 字數 3294 閱讀 1425

一款工業級多功能時鐘/日曆晶元,具有報警功能、定時器功能、時鐘輸出功能以及中斷輸出功能,能完成各種複雜的定時服務。

開始訊號+ 7位位址+寫操作+響應+寫暫存器位址+響應訊號+開始+7位位址+讀操作+響應+0x02資料+響應+0x03資料+。。。。+非應答訊號+停止訊號

讀出資料所用always

always @(posedge clk or negedge rst_n) begin

if(!rst_n) begin

sec <=

8'h0;

min <=

8'h0;

hour <=

8'h0;

day <=

8'h0;

mon <=

8'h0;

year <=

8'h0;

i2c_exec <=

1'b0;

i2c_rh_wl <=

1'b0;

i2c_addr <=

8'd0;

i2c_data_w <=

8'd0;

flow_cnt <=

4'd0;

wait_cnt <=

13'd0;

endelse begin

i2c_exec <=

1'b0;

case

(flow_cnt)

//上電初始化

4'd0: begin

if(wait_cnt ==

13'd8000) begin

wait_cnt<=

12'd0;

flow_cnt<= flow_cnt +

1'b1;

endelse

wait_cnt<= wait_cnt +

1'b1;

end//寫讀秒

4'd1: begin

i2c_exec <=

1'b1;

i2c_addr <=

8'h02;

flow_cnt <= flow_cnt +

1'b1;

i2c_data_w<= time_ini[7:

0]; end

4'd2: begin

if(i2c_done ==

1'b1) begin

sec <= i2c_data_r[6:

0]; flow_cnt<= flow_cnt +

1'b1;

endend

//寫讀分

4'd3: begin

i2c_exec <=

1'b1;

i2c_addr <=

8'h03;

flow_cnt <= flow_cnt +

1'b1;

i2c_data_w<= time_ini[15:

8]; end

4'd4: begin

if(i2c_done ==

1'b1) begin

min <= i2c_data_r[6:

0]; flow_cnt<= flow_cnt +

1'b1;

endend

//寫讀時

4'd5: begin

i2c_exec <=

1'b1;

i2c_addr <=

8'h04;

flow_cnt <= flow_cnt +

1'b1;

i2c_data_w<= time_ini[23:

16]; end

4'd6: begin

if(i2c_done ==

1'b1) begin

hour <= i2c_data_r[5:

0]; flow_cnt<= flow_cnt +

1'b1;

endend

//寫讀天

4'd7: begin

i2c_exec <=

1'b1;

i2c_addr <=

8'h05;

flow_cnt <= flow_cnt +

1'b1;

i2c_data_w<= time_ini[31:

24]; end

4'd8: begin

if(i2c_done ==

1'b1) begin

day <= i2c_data_r[5:

0]; flow_cnt<= flow_cnt +

1'b1;

endend

//寫讀月

4'd9: begin

i2c_exec <=

1'b1;

i2c_addr <=

8'h07;

flow_cnt <= flow_cnt +

1'b1;

i2c_data_w<= time_ini[39:

32]; end

4'd10: begin

if(i2c_done ==

1'b1) begin

mon <= i2c_data_r[4:

0]; flow_cnt<= flow_cnt +

1'b1;

endend

//寫讀年

4'd11: begin

i2c_exec <=

1'b1;

i2c_addr <=

8'h08;

flow_cnt <= flow_cnt +

1'b1;

i2c_data_w<= time_ini[47:

40]; end

4'd12: begin

if(i2c_done ==

1'b1) begin

year <= i2c_data_r;

i2c_rh_wl<=

1'b1;

flow_cnt <=

4'd1;

endend

default

: flow_cnt <=

4'd0;

endcase

endend

FPGA綜合優化

1 速度和面積 在全面優化水平將達到速度和面積rtl要利用邏輯拓撲的優勢。供 由於在後端而言缺乏知識,門級優化。普通情況下更高的速度要求更高的並行性以及更大的面積,可是在某些特殊情況下並非這樣。由於fpga的布局佈線具有二階效應。直到布局佈線完畢。工具才會知道器件的擁堵或者佈線的困難,可是這時實際邏...

18 綜合練習

目錄 驗證碼必須放到session中 快速封裝引數為物件 使用者登入成功之後,需要使用重定向來進行跳轉,不能使用 跳轉 沒有在request中儲存資料,跳轉時就應該使用重定向 資料庫中,如果主鍵是自增長的,在插入資料時,主鍵的位置填入null即可。阻止表單提交注意事項 分頁 分頁好處 輸入 輸出分頁...

FPGA綜合編碼

1 判決樹 在fpga中判斷使用if else語句以及case實現。a if else 是有特權的,類似於優先編碼 當兩個條件同時成立,僅判斷條件靠前的成立 所以當有特權條件時應該採用if else結構,對於並行的if條件語句其特權順序恰好與if else 相反。b case 語句常常 不總是 用在...