新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 好用的Verilog串口UART程序

        好用的Verilog串口UART程序

        作者: 時(shí)間:2010-06-20 來源:網(wǎng)絡(luò) 收藏

        ==========================================================================
        //-----------------------------------------------------
        // Design Name : uart
        // File Name : uart.v
        // Function : Simple
        // Coder : Deepak Kumar Tala
        //-----------------------------------------------------
        module uart (
        reset ,
        txclk ,
        ld_tx_data ,
        tx_data ,
        tx_enable ,
        tx_out ,
        tx_empty ,
        rxclk ,
        uld_rx_data ,
        rx_data ,
        rx_enable ,
        rx_in ,
        rx_empty
        );
        // Port declarations
        input reset ;
        input txclk ;
        input ld_tx_data ;
        input [7:0] tx_data ;
        input tx_enable ;
        output tx_out ;
        output tx_empty ;
        input rxclk ;
        input uld_rx_data ;
        output [7:0] rx_data ;
        input rx_enable ;
        input rx_in ;
        output rx_empty ;

        // Internal Variables
        reg [7:0] tx_reg ;
        reg tx_empty ;
        reg tx_over_run ;
        reg [3:0] tx_cnt ;
        reg tx_out ;
        reg [7:0] rx_reg ;
        reg [7:0] rx_data ;
        reg [3:0] rx_sample_cnt ;
        reg [3:0] rx_cnt ;
        reg rx_frame_err ;
        reg rx_over_run ;
        reg rx_empty ;
        reg rx_d1 ;
        reg rx_d2 ;
        reg rx_busy ;

        // RX Logic
        always @ (posedge rxclk or posedge reset)
        if (reset) begin
        rx_reg = 0;
        rx_data = 0;
        rx_sample_cnt = 0;
        rx_cnt = 0;
        rx_frame_err = 0;
        rx_over_run = 0;
        rx_empty = 1;
        rx_d1 = 1;
        rx_d2 = 1;
        rx_busy = 0;
        end else begin
        // Synchronize the asynch signal
        rx_d1 = rx_in;
        rx_d2 = rx_d1;
        // Uload the rx data
        if (uld_rx_data) begin
        rx_data = rx_reg;
        rx_empty = 1;
        end
        // Receive data only when rx is enabled
        if (rx_enable) begin
        // Check if just received start of frame


        上一頁 1 2 下一頁

        關(guān)鍵詞: 程序 UART 串口 Verilog

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 岫岩| 博罗县| 鹤岗市| 镶黄旗| 丽水市| 灵山县| 莒南县| 宝兴县| 本溪| 永清县| 宁安市| 团风县| 花垣县| 三亚市| 京山县| 昭通市| 南木林县| 阿瓦提县| 万源市| 威海市| 嵊泗县| 朝阳市| 芷江| 县级市| 台东市| 贡觉县| 全州县| 文化| 海淀区| 眉山市| 涿州市| 诸城市| 都匀市| 望奎县| 怀化市| 乐都县| 阿瓦提县| 九台市| 余姚市| 宁波市| 进贤县|