在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            Altera MAX10: LED流水燈

            作者: 時(shí)間:2023-11-02 來源:電子森林 收藏

            在時(shí)鐘分頻實(shí)驗(yàn)中我們練習(xí)了如何處理時(shí)鐘,接下來我們要學(xué)習(xí)如何利用時(shí)鐘來完成時(shí)序邏輯。

            本文引用地址:http://www.biyoush.com/article/202311/452378.htm

            實(shí)現(xiàn)是很常見的一個(gè)實(shí)驗(yàn),雖然邏輯比較簡單,但是里面也包含了實(shí)現(xiàn)時(shí)序邏輯的基本思想。要用實(shí)現(xiàn)有很多種方法,在這里我們會用兩種不同的方法實(shí)現(xiàn)。
            1,模塊化設(shè)計(jì):在之前的實(shí)驗(yàn)中我們做了3-8譯碼器和時(shí)鐘分頻,如果把這兩個(gè)結(jié)合起來,我們就能搭建一個(gè)自動操作的流水LED顯示。框圖如下:

            2,循環(huán)賦值:這是一種很簡潔的實(shí)現(xiàn)效果邏輯,就是定義一個(gè)8位的變量,在每個(gè)時(shí)鐘上升沿將最低位賦值給最高位,其他位右移一位,這就實(shí)現(xiàn)了循環(huán)賦值。這8位輸出到LED就能實(shí)現(xiàn)流水燈。

            模塊化設(shè)計(jì)是用硬件描述語言進(jìn)行數(shù)字電路設(shè)計(jì)的精髓,代碼可重復(fù)利用。而且模塊化的設(shè)計(jì)使得程序的結(jié)構(gòu)也很清晰。這里我們首先看看流水燈的模塊化設(shè)計(jì)。利用了之前的3-8譯碼器和分頻器,你需要把這兩個(gè)程序也拷貝到一個(gè)工程。

            // ********************************************************************
            // >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
            // ********************************************************************
            // File name    : flashled.v
            // Module name  : flashled
            // Author       : STEP
            // Description  : segment initial
            // Web          : www.stepfpga.com 
            // 
            // --------------------------------------------------------------------
            // Code Revision History : 
            // --------------------------------------------------------------------
            // Version: |Mod. Date:   |Changes Made:
            // V1.0     |2017/03/02   |Initial ver
            // --------------------------------------------------------------------
            // Module Function:流水燈的模塊化設(shè)計(jì) 
            module flashled (clk,rst,led); 	
            input clk,rst;						
            	output [7:0] led;				 
                     reg   [2:0] cnt ;                               //定義了一個(gè)3位的計(jì)數(shù)器,輸出可以作為3-8譯碼器的輸入         
                     wire clk1h;                                     //定義一個(gè)中間變量,表示分頻得到的時(shí)鐘,用作計(jì)數(shù)器的觸發(fā)                 
                     //例化module decode38,相當(dāng)于調(diào)用
                    decode38 u1 (                                   
            			.sw(cnt),                       //例化的輸入端口連接到cnt,輸出端口連接到led  
            			.led(led)
            			);         //例化分頻器模塊,產(chǎn)生一個(gè)1Hz時(shí)鐘信號		
                    divide #(.WIDTH(32),.N(12000000)) u2 (         //傳遞參數(shù)
            			.clk(clk),
            			.rst_n(rst),                   //例化的端口信號都連接到定義好的信號
            			.clkout(clk1h)
            			);                                      //1Hz時(shí)鐘上升沿觸發(fā)計(jì)數(shù)器,循環(huán)計(jì)數(shù)		
                    always @(posedge clk1h or negedge rst)
            	     if (!rst)
            		cnt <= 0;
            	     else
            		cnt <= cnt +1;         
            		endmodule

            模塊化設(shè)計(jì)結(jié)構(gòu)清晰,verilog語言是很靈活的。對于流水燈還有一種很簡潔的實(shí)現(xiàn)方法。

            // ********************************************************************
            // >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
            // ********************************************************************
            // File name    : flashled.v
            // Module name  : flashled
            // Author       : STEP
            // Description  : segment initial
            // Web          : www.stepfpga.com 
            // 
            // --------------------------------------------------------------------
            // Code Revision History : 
            // --------------------------------------------------------------------
            // Version: |Mod. Date:   |Changes Made:
            // V1.0     |2017/03/02   |Initial ver
            // --------------------------------------------------------------------
            // Module Function:流水燈的模塊化設(shè)計(jì) 
            module flashled (clk,rst,led); 	
            input clk,rst;						
            	output [7:0] led;				         
            	wire clk1h;                                 //定義一個(gè)中間變量,表示分頻得到的時(shí)鐘,用作計(jì)數(shù)器的觸發(fā)                 
            	//例化分頻器模塊,產(chǎn)生一個(gè)1Hz時(shí)鐘信號		
                    divide #(.WIDTH(32),.N(12000000)) u2 (         //傳遞參數(shù)
            			.clk(clk),
            			.rst_n(rst),                   //例化的端口信號都連接到定義好的信號
            			.clkout(clk1h)
            			);                                      //1Hz時(shí)鐘上升沿觸發(fā)循環(huán)賦值	
                    reg [7:0] led;
                    always@(posedge clk1h or negedge rst)
            	begin
            		if(!rst)
            			led <= 8'b11111110;            // <=為非阻塞賦值
            		else 
            			led <= {led[0],led[7:1]};      
            			//當(dāng)時(shí)鐘上升沿來一次,執(zhí)行一次賦值,賦值內(nèi)容是led[0]與led[7:1]重新拼接成8位賦給led,相當(dāng)于循環(huán)右移
            	end	

            按照下面表格定義輸入輸出信號

            信號引腳信號引腳
            clkJ5led[3]M12
            rstJ9led[4]L15
            led[0]N15led[5]K12
            led[1]N14led[6]L11
            led[2]M14led[7]K11

            配置好以后編譯下載程序??梢哉{(diào)整例化分頻器時(shí)傳遞的參數(shù)來調(diào)整流水燈的速度。

            掌握了verilog里面例化module的用法,采用模塊化設(shè)計(jì)程序。模塊化設(shè)計(jì)是非常重要的設(shè)計(jì)思想。在下一節(jié)我們會學(xué)習(xí)按鍵的另外用法按鍵消抖。



            關(guān)鍵詞: 流水燈 FPGA Lattice Diamond 小腳丫

            評論


            相關(guān)推薦

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

            關(guān)閉