久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5440|回復(fù): 1
收起左側(cè)

FPGA學(xué)習(xí)板的流水燈Quartus源碼

[復(fù)制鏈接]
ID:377015 發(fā)表于 2018-7-22 02:06 | 顯示全部樓層 |閱讀模式
自制,功能包括:
開關(guān)1、2(17、16)控制流水燈速度,00-1分頻,01-2分頻,10-4分頻,11-8分頻
開關(guān)3、4(15、14)控制流水燈花型,00-00010001,每次移動1,01-00110011,每次移動2,10-01110111,每次移動3,11-00001111,每次移動4
開關(guān)5(13)控制流水燈移動方向,0-左,1-右
按鈕1(0)復(fù)位
LCD屏顯示速度、花型和方向,顯示效果大致為
4S`LBJ(3W1XQ9Z9Z$MTZ5P5.png
(有頻閃)
雖然是個智障小程序,不過是FPGA入門課的常見作業(yè)……解壓之后直接用Quartus打開就可以了

源程序如下:
  1. module LED(
  2.         input rst_n,
  3.                 input sw1,
  4.                 input sw2,
  5.                 input sw3,
  6.                 input sw4,
  7.                 input sw5,
  8.                 output led0,
  9.                 output led1,
  10.                 output led2,
  11.                 output led3,
  12.                 output led4,
  13.                 output led5,
  14.                 output led6,
  15.                 output led7,
  16. input clk,
  17. output reg [7:0] dat,
  18. output reg rs,
  19. output rw,
  20. output en
  21. );   
  22. reg e;   
  23. reg  [15:0] counter;
  24. reg [5:0] current,next,next_f;
  25. reg clkr;
  26. reg [1:0] cnt_f,cnt_g;
  27. reg [26:0] cnt;
  28. reg [7:0] led;
  29. reg [3:0] spd;
  30. reg [1:0] knd;
  31. reg drc;
  32. reg [1:0] stt;
  33. reg [4:0] flg;
  34. reg [4:0] flg_f;
  35. reg [5:0] stt_f;
  36. reg [2:0] i;
  37. always @(posedge clk or negedge rst_n) begin
  38.         if(!rst_n) begin
  39.                 cnt <= 27'd0;
  40.                 stt <= 2'd0;
  41.                 next_f <= 6'h0;
  42.                 cnt_g <= 2'h0;
  43.         end
  44.         else begin
  45.                 i <= sw2 * 2'd3;
  46.                 spd <= (sw1 + 1'b1) * (i + 1'b1);
  47.                 knd[0] <= sw3;
  48.                 knd[1] <= sw4;
  49.                 drc <= sw5;
  50.                 cnt <= cnt + 1'b1;
  51.                 if(cnt == 27'h400000 * spd) begin
  52.                         cnt <= 27'd0;
  53.                         stt <= stt + 1'b1 - drc * 2'd2;
  54.                         case(knd * 4 + stt)
  55.                                 4'h0:led <= 8'h11;
  56.                                 4'h1:led <= 8'h22;
  57.                                 4'h2:led <= 8'h44;
  58.                                 4'h3:led <= 8'h88;
  59.                                 4'h4:led <= 8'h33;
  60.                                 4'h5:led <= 8'hCC;
  61.                                 4'h6:led <= 8'h33;
  62.                                 4'h7:led <= 8'hCC;
  63.                                 4'h8:led <= 8'h77;
  64.                                 4'h9:led <= 8'hEE;
  65.                                 4'hA:led <= 8'hDD;
  66.                                 4'hB:led <= 8'hBB;
  67.                                 4'hC:led <= 8'hF;
  68.                                 4'hD:led <= 8'hF0;
  69.                                 4'hE:led <= 8'hF;
  70.                                 4'hF:led <= 8'hF0;
  71.                         endcase
  72.                 end
  73.         end
  74. end
  75. always @(posedge clk)      
  76. begin
  77.   counter=counter+1;
  78.   if(counter==16'h000f)  
  79.   clkr=~clkr;
  80. end
  81. always @(posedge clkr)
  82. begin
  83. current=next;
  84.   case(current)
  85.     6'h0:   begin  rs<=0; dat<=8'h38; next<=6'h1; end //清屏       
  86.     6'h1:   begin  rs<=0; dat<=8'h0c; next<=6'h2; end //設(shè)置顯示模式
  87.     6'h2:   begin  rs<=0; dat<=8'h6; next<=6'h3; end //顯示器開、光標(biāo)不顯示、光標(biāo)不允許閃爍
  88.     6'h3:   begin  rs<=0; dat<=8'h1; next<=6'h4; end
  89.     6'h4:   begin  rs<=1; dat<=" "; next<=6'h5; end
  90.     6'h5:   begin  rs<=1; dat<="S"; next<=6'h6; end
  91.     6'h6:   begin  rs<=1; dat<="p"; next<=6'h7; end
  92.     6'h7:   begin  rs<=1; dat<="e"; next<=6'h8; end
  93.     6'h8:   begin  rs<=1; dat<="e"; next<=6'h9; end
  94.     6'h9:   begin  rs<=1; dat<="d"; next<=6'hA; end
  95.     6'hA:   begin  rs<=1; dat<=":"; next<=6'hB; end
  96.     6'hB:   begin  rs<=1; dat<= 8'h30 + spd; next<=6'hC; end
  97.     6'hC:   begin  rs<=1; dat<=" "; next<=6'hD; end
  98.     6'hD:   begin  rs<=1; dat<="K"; next<=6'hE; end
  99.     6'hE:   begin  rs<=1; dat<="i"; next<=6'hF; end
  100.     6'hF:   begin  rs<=1; dat<="n"; next<=6'h10; end
  101.          6'h10:   begin  rs<=1; dat<="d"; next<=6'h11; end
  102.          6'h11:   begin  rs<=1; dat<=":"; next<=6'h12; end
  103.          6'h12:   begin  rs<=1; dat<= 8'h31 + knd; next<=6'h13; end
  104.          6'h13:   begin  rs<=1; dat<=" "; next<=6'h14; end
  105.          6'h14:   begin  rs<=0; dat<=8'hC0; next<=6'h15; end
  106.          6'h15:   begin  rs<=1; dat<=" "; next<=6'h16; end
  107.          6'h16:   begin  rs<=1; dat<=" "; next<=6'h17; end
  108.          6'h17:   begin  rs<=1; dat<="D"; next<=6'h18; end
  109.          6'h18:   begin  rs<=1; dat<="i"; next<=6'h19; end
  110.          6'h19:   begin  rs<=1; dat<="r"; next<=6'h1A; end
  111.          6'h1A:   begin  rs<=1; dat<="e"; next<=6'h1B; end
  112.          6'h1B:   begin  rs<=1; dat<="c"; next<=6'h1C; end
  113.          6'h1C:   begin  rs<=1; dat<="t"; next<=6'h1D; end
  114.          6'h1D:   begin  rs<=1; dat<="i"; next<=6'h1E; end
  115.          6'h1E:   begin  rs<=1; dat<="o"; next<=6'h1F; end
  116.          6'h1F:   begin  rs<=1; dat<="n"; next<=6'h20; end
  117.          6'h20:   begin  rs<=1; dat<=":"; next<=6'h21; end
  118.          6'h21:   begin  rs<=1; dat<= 8'h30 + drc; next<=6'h22; end
  119.          6'h22:   begin  rs<=1; dat<=" "; next<=6'h23; end
  120.          6'h23:   begin  rs<=1; dat<=" "; next<=6'h24; end
  121.          6'h24:   begin  rs<=1; dat<=" "; next<=6'h25; end
  122.     6'h25:   begin rs<=0;  dat<=8'h00;                    //行一遍 然后 把液晶的E 腳 拉高
  123.               if(cnt_f!=2'h2)  
  124.                   begin  
  125.                        e<=0;next<=6'h0;cnt_f<=cnt_f+1;   
  126.                   end  
  127.                    else  
  128.                      begin next<=6'h25; e<=1; next <= next_f; cnt_f <= cnt_g;
  129.                     end   
  130.               end
  131.    default:   next=6'h0;
  132.     endcase
  133. end
  134. assign en=clkr|e;
  135. assign rw=0;
  136. assign led0 = led[0];
  137. assign led1 = led[1];
  138. assign led2 = led[2];
  139. assign led3 = led[3];
  140. assign led4 = led[4];
  141. assign led5 = led[5];
  142. assign led6 = led[6];
  143. assign led7 = led[7];
  144. endmodule  
復(fù)制代碼
0.png

所有資料51hei提供下載:
LED.rar (3.29 MB, 下載次數(shù): 35)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:191615 發(fā)表于 2018-11-22 14:56 | 顯示全部樓層
學(xué)習(xí)了,我是初學(xué)者,有點頭大
回復(fù)

使用道具 舉報

無效樓層,該帖已經(jīng)被刪除
無效樓層,該帖已經(jīng)被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩中文字幕在线 | 黄色av网站在线观看 | 精品国产欧美日韩不卡在线观看 | 春色av | 中文字幕精品视频 | 中文精品视频 | 国产高清精品一区二区三区 | 成人在线精品视频 | 久久久久国产精品一区二区 | 国产成人小视频 | 91麻豆精品一区二区三区 | 97超碰免费| 一区二区国产精品 | 欧美激情一区二区三区 | 色婷婷av一区二区三区软件 | 深夜福利影院 | 夜夜骑首页 | 亚洲伊人久久综合 | 久久精品欧美视频 | 伊人久久大香线 | 亚洲成av人影片在线观看 | 国产在线看片 | 激情国产在线 | 99精品一区二区 | 亚洲国产欧美一区二区三区久久 | 欧美日韩一区二区三区不卡视频 | 国产美女视频黄a视频免费 国产精品福利视频 | 亚洲 欧美 另类 日韩 | 亚洲高清在线 | 国产精品视频一区二区三区四区国 | 日本a在线 | 天天爱天天操 | 蜜桃av一区二区三区 | 黄色在线观看网址 | 狠狠艹 | 国产高清精品在线 | 欧美精品免费观看二区 | 中文字幕日韩欧美 | 欧美一区二区三区视频在线 | 国产午夜精品久久 | 日韩一区二区精品 |