freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于verilog的串口通信實驗指導(dǎo)和源程序(參考版)

2024-08-21 17:16本頁面
  

【正文】 endmodule 。 120000 first。 104160 rx = 1。 104160 rx = 1。 104160 rx = 1。 104160 rx = 0。 initial begin //對rx進(jìn)行測試賦值; 100 rx = 0。 end initial begin //系統(tǒng)時鐘是50M,周期20ns; forever 10 sys_clk = ~sys_clk。 2 rst_n = 0。 tx_en = 1。//例化 initial begin //系統(tǒng)初始化; sys_clk = 0。 wire [7:0] led。 reg tx_en。 reg rst_n。endmodule 測試模塊:module uart_tb。 //在clk16x一般周期內(nèi),保持狀態(tài)和計數(shù)器不變; num = num。b1。d9: tx_r = 0。d8: tx_r = tx_data_r[7] 。d7: tx_r = tx_data_r[6] 。d6: tx_r = tx_data_r[5] 。d5: tx_r = tx_data_r[4] 。d4: tx_r = tx_data_r[3] 。d3: tx_r = tx_data_r[2] 。d2: tx_r = tx_data_r[1] 。d1: tx_r = tx_data_r[0] 。d1。d0。 state = t_idle 。d0。 else state = t_idle。b1。b0。 //未檢測到,則保留原始狀態(tài); t_start: if (clk_bps2) begin state = t_shift。 tx_data_r[7] = tx_data_r_r[7] 。 tx_data_r[5] = tx_data_r_r[5] 。 tx_data_r[3] = tx_data_r_r[3] 。 tx_data_r[1] = tx_data_r_r[1] 。 //輸出緩沖初始化; end else begin case(state) t_idle: if (tx_n) begin state = t_start。 //計數(shù)器初始化; tx_r = 139。 //接收寄存器初始化; num = 439。 //上電復(fù)位,進(jìn)入初始狀態(tài),tx_data_r = 839。 //保證當(dāng)tx_n跳變?yōu)榈碗娖綍r,bps_start_r仍然為高電平; end assign bps_start2 = bps_start_r。b1。b0。 ~tx3。 ~tx1 amp。 tx3 = tx2。 tx1 = tx0。 tx3 = 1。 tx1 = 1。 end end always (posedge clk16x2 or negedge rst_n2) begin //設(shè)置這四個狀態(tài)寄存器,用來捕捉“幀開始信號”,原理同UART_rx。 tx_data_r_r[6] = tx_data[6] 。 tx_data_r_r[4] = tx_data[4] 。 tx_data_r_r[2] = tx_data[2] 。 end else begin tx_data_r_r[0] = tx_data[0] 。 always (posedge clk16x2 or negedge rst_n2) begin //緩存并行線上數(shù)據(jù); if (!rst_n2) begin tx_data_r_r = 839。 parameter t_shift= 339。 //定義狀態(tài)機(jī)的三種狀態(tài) parameter t_start= 339。 //緩沖寄存器,在發(fā)送信號到來之前先緩存線上的數(shù)據(jù); parameter t_idle = 339。 //內(nèi)部計數(shù)器,用來確定傳送了多少個數(shù)據(jù)位; reg tx_r。 //內(nèi)部緩沖寄存器,接受保存并行數(shù)據(jù); reg bps_start_r。 //定義狀態(tài)寄存器變量,用狀態(tài)機(jī)來表示接掌韉腦誦泄蹋? reg [7:0] tx_data_r 。 //定義四黽拇嫫鰨美醇觳餛鶚嘉?; wire tx_n。 //采樣數(shù)據(jù)置位信號,bps_strat為1時,波特率發(fā)生器的t開始計數(shù),按照波特率的速度來采樣; output tx。 //數(shù)據(jù)幀發(fā)送命令;注意是低電平有效?。。。。。。。。。。。。。。。。。。。。。。。。。?! input [7:0] tx_data。 //中間點采樣信號。 // 16倍過采樣信號; input rst_n2。 endmodule 發(fā)送端口模塊:module uart_tx(clk16x2,rst_n2,clk_bps2,tx_en,bps_start2,tx,tx_data)。 end assign clk_bps = clk_bps_r。 end else t_16x = t_16x + 139。 t_16x = 939。d0。d0。 end always (posedge sys_clk or negedge rst_n) begin // 這一段用來設(shè)置過采樣的時鐘,clk16x是baud9600的16倍,用來檢測起始位和結(jié)束位。d0。d1。d0。 //bps_start是表明,已經(jīng)檢測到起始位,開始采樣數(shù)據(jù)藕?;因凑f敝揮械眀ps_start值為1時,才啟動t,t的首次啟動必須依賴于bps_start,以后在每一個數(shù)據(jù)檢測期間,依賴于5207復(fù)位。 else t = t + 139。 t = 1339。d0。 //波特率9600bps,則計數(shù)到5207開始分頻 `define BAUD_SPEED_HALF 2603。 reg [8:0] t_16x。 //同上 reg [12:0] t 。 //波特率發(fā)生器的過采樣分頻,16倍于波特率 reg clk_bps_r。 //波特率時鐘置位信號,從uart_rx,uart_tx傳來 output clk_bps。 // 系統(tǒng)時鐘,50M HZ input rst_n。 //當(dāng)data_ready=1時,表示數(shù)據(jù)接受完畢,已經(jīng)裝好,可以發(fā)送;如果不為1,則rx_data保持為高阻態(tài);endmodule 發(fā)送端波特率發(fā)生器模塊:(同接收端一樣的)module baud_tx (sys_clk,rst_n,bps_start,clk_bps,clk16x)。 end end endcase end end assign rx_data = data_ready ? rx_data_r : 839。 end else begin num = num。 //保證當(dāng)計數(shù)器變成9,10的時候,不會被清零,保持接受到的數(shù)據(jù)不變; endcase led = rx_data_r。d8: rx_data_r[7] = rx。d7: rx_data_r[6] = rx。d6: rx_data_r[5] = rx。d5: rx_data_r[4] = rx。d4: rx_data_r[3] = rx。d3: rx_data_r[2] = rx。d2: rx_data_r[1] = rx。d1: rx_data_r[0] = rx。d1。 //清零num,供下一輪使用; data_ready = 1。 //采樣結(jié)束; num = 439。 //當(dāng)接受了10個信號以后,這一幀數(shù)據(jù)接受完畢,關(guān)閉bps_start。 //沒有收到置位信號,則返回初始態(tài); r_sample
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1