<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ` `在quartus平臺中使用串口模塊的IP,需要使用到platform designer軟件來實現。 ## 操作步驟 ` `1、在quartus界面調出IP Catalog界面。 ![](https://img.kancloud.cn/59/17/5917074887afaa925648d05b7198adbc_469x778.png) ` `2、在IP catalog中搜索UART,找到RS2323模塊,并雙擊打開,選擇合適的路徑和存放。 ![](https://img.kancloud.cn/bd/e4/bde4349aec0a622288f50764588a3c90_1447x704.png) ` `3、使用該模塊若不搭建nios軟核,則使用streaming。 ![](https://img.kancloud.cn/6c/48/6c482e5cd243b42ecf08fa42e56cda89_495x471.png) 在右上角電機Block Symbol或者在菜單選擇View->Block Symbol打開模塊符號。 ![](https://img.kancloud.cn/46/54/465477631e87ebb3e0baeaf4f4e83c11_678x515.png) ` `4、串口配置了波特率,其自動配置的參數與時鐘有關,因此需要加入時鐘模塊,告知系統輸入時鐘為多少。 操作如下: ![](https://img.kancloud.cn/30/ef/30efbaa4fd005352ec47a50572cac4fd_591x632.png) ` `5、打開系統連接的界面,為其添加時鐘輸入模塊。 ![](https://img.kancloud.cn/12/10/1210379201fc2fc4df1a32152b8c0be3_532x583.png) ` `6、在IP搜索欄搜索clock,雙擊選擇的模塊添加時鐘模塊,輸入模塊。 ![](https://img.kancloud.cn/28/16/28169074b341b6f67f8cccafe6c3c3c2_710x551.png) ` `7、根據板載資源,設置時鐘的參考時鐘。 ![](https://img.kancloud.cn/f1/3d/f13dfbbd6e08fd3bef7b3765696999fe_1168x775.png) ` `8、連接時鐘模塊和串口模塊的clk和reset。 ![](https://img.kancloud.cn/07/99/079943c0561fabdc6d9dc198b1a55b44_591x349.png) ` `9、點擊Generate HDL生成模塊。 ![](https://img.kancloud.cn/29/fb/29fbc8cfaf82f548a4e46b9fe93deef3_1911x1059.png) ` `10、在quartus中添加生成的sys系統。 ![](https://img.kancloud.cn/2c/a4/2ca429400defa9271c42e8e48d2b916c_1784x759.png) ![](https://img.kancloud.cn/60/1a/601a0e3f4360e5ccd7aa8574567dfbf8_1017x843.png) ![](https://img.kancloud.cn/fa/03/fa03fa8dac27df4c231489e5f876fd62_1036x618.png) ![](https://img.kancloud.cn/e0/78/e078691c39c8a27a3f040a634931f364_1006x851.png) ` `11、從platform designer生成模塊實例將實例拷貝到添加到quartus的頂層文件中,添加寫數據和讀數據的時序。 ![](https://img.kancloud.cn/8f/8d/8f8d67387f76c22528a431f0571d71a3_1240x552.png) ![](https://img.kancloud.cn/a3/45/a345336e4ff2507738519c3064b145e9_604x501.png) ![](https://img.kancloud.cn/8c/16/8c16165c87a23dc6ec864f3d0618ad6c_1302x394.png) 這里只測試一下串口發送數據的功能,接收數據的操作基本是一樣的。 ` `12、在platform designer查看串口模塊發送數據的時序。 ![](https://img.kancloud.cn/36/3f/363f7ebe909f96b915c08d3b8c2bbf73_1011x553.png) ![](https://img.kancloud.cn/5b/2a/5b2abc2612a7e75e007067a71b08695c_1619x863.png) ` `同理在這里一樣可以查看到接收數據的時序。 ` `需要注意的是,時序中的數據其實是在to_uart_valid信號為1時,在每一個時鐘上升沿讀取一個要發送的數據,當數據讀入后to_uart_ready信號通知RS232模塊發送數據,可以在需要發送的數據都寫入RS232后在讓to_uart_valid信號拉高觸發發送,也可以在valid信號之后就開始觸發,但是一定得注意發送的數據個數適合valid信號為高電平時其中有多少個上升沿決定的。 ` `下面是測試串口發送數據的頂層文件。 ``` module top2( input wire clk,//50MHz時鐘 //rst,// output reg led, //用于指示 input wire rxd, output wire txd, inout dht_io ); //*********************************PROCESS************************************** // 復位模塊 //****************************************************************************** reg rst_n ; reg [15:0]delay_cnt; always@(posedge clk) begin if(delay_cnt>=16'd35530)begin delay_cnt <= delay_cnt; rst_n <= 1'b1; end else begin rst_n <= 1'b0; delay_cnt <= delay_cnt + 1'b1; end end //指示燈 //assign txd = led; reg [31:0]cnt; reg led_f1,tx_flag; always@(posedge clk) begin led_f1 <= led; tx_flag <= led &(~led_f1); if(cnt >= 32'd25000000 - 1) begin cnt <= 0; led <=~led; end else begin cnt <= cnt + 1'b1 ; end end //-------------------------------------------- localparam s_s1=0; localparam s_s2=1; localparam s_s3=2; localparam s_s4=3; reg [7:0]send_data; reg to_uart_valid , to_uart_ready; reg [2:0]send_st; reg [7:0]data_cnt; always@(posedge clk) begin if(!rst_n)begin to_uart_ready <= 1'b0; to_uart_valid <= 1'b0; send_data <= 8'd0; send_st<= s_s1; data_cnt <= 8'd0; end else begin case(send_st) s_s1:begin//待機 if(tx_flag)begin send_st <= s_s2; to_uart_valid <= 1'b0; to_uart_ready<= 1'b0; data_cnt <= 8'd0; send_data <= 9; end else begin to_uart_valid <= 1'b0; to_uart_ready<= 1'b0; end end s_s2:begin if(data_cnt <= 8'd8-1'b1)begin to_uart_valid <= 1'b1; //to_uart_ready <= (data_cnt >= 8'd5-1)?1'b0:1'b1; send_data <= data_cnt+1; data_cnt <= data_cnt + 1'b1; send_st <= (data_cnt >= 8'd5-1)?s_s3:s_s2; end end s_s3:begin to_uart_valid <= 1'b0; to_uart_ready <= 1'b1; send_st <= s_s1; data_cnt<=8'd0; end default :send_st <= s_s1; endcase end end IP_UART u0 ( //.rs232_0_from_uart_ready (<connected-to-rs232_0_from_uart_ready>), // rs232_0_avalon_data_receive_source.ready //.rs232_0_from_uart_data (<connected-to-rs232_0_from_uart_data>), // .data //.rs232_0_from_uart_error (<connected-to-rs232_0_from_uart_error>), // .error //.rs232_0_from_uart_valid (<connected-to-rs232_0_from_uart_valid>), // .valid .rs232_0_to_uart_data (send_data), // rs232_0_avalon_data_transmit_sink.data .rs232_0_to_uart_error (), // .error .rs232_0_to_uart_valid (to_uart_valid), // .valid .rs232_0_to_uart_ready (to_uart_ready), // .ready .rs232_0_UART_RXD (rxd), // rs232_0_external_interface.RXD .rs232_0_UART_TXD (txd), // .TXD .clk_clk (clk), // clk.clk .reset_reset_n (rst_n) // reset.reset_n ); endmodule ``` ` `結果如下: ![](https://img.kancloud.cn/80/0c/800c2a8a9799742811c00dc18b0f4c65_942x690.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看