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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5332|回復: 1
打印 上一主題 下一主題
收起左側

FPGA學習板的流水燈Quartus源碼

[復制鏈接]
跳轉到指定樓層
樓主
自制,功能包括:
開關1、2(17、16)控制流水燈速度,00-1分頻,01-2分頻,10-4分頻,11-8分頻
開關3、4(15、14)控制流水燈花型,00-00010001,每次移動1,01-00110011,每次移動2,10-01110111,每次移動3,11-00001111,每次移動4
開關5(13)控制流水燈移動方向,0-左,1-右
按鈕1(0)復位
LCD屏顯示速度、花型和方向,顯示效果大致為

(有頻閃)
雖然是個智障小程序,不過是FPGA入門課的常見作業……解壓之后直接用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 //設置顯示模式
  87.     6'h2:   begin  rs<=0; dat<=8'h6; next<=6'h3; end //顯示器開、光標不顯示、光標不允許閃爍
  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  
復制代碼


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


評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:191615 發表于 2018-11-22 14:56 | 只看該作者
學習了,我是初學者,有點頭大
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久国产精品-国产精品 | 日韩精品在线看 | 亚洲成人免费在线 | 成年人在线观看 | 五月天天丁香婷婷在线中 | 盗摄精品av一区二区三区 | 国产福利视频 | 久久精品国产久精国产 | 天堂中文资源在线 | 日韩欧美一级 | 精品一区二区电影 | 国产在线第一页 | 国产精品一二区 | 成人三区四区 | 成人久久久| 亚洲国产欧美日韩 | 亚洲91精品 | 日韩欧美国产一区二区三区 | 亚洲激情在线观看 | 成人亚洲网站 | 99免费在线视频 | 久久一区精品 | 久久www免费人成看片高清 | 中文字幕一区在线观看视频 | 国产精品久久久久久久久久久免费看 | 天天久 | 精品二区 | 久久久夜色精品亚洲 | av官网在线| 国产精品一区二区三区久久 | 国产精品高潮呻吟久久av黑人 | 夜夜爽夜夜操 | 欧美在线视频二区 | 亚洲成人av在线播放 | 亚洲视频一区二区三区 | 婷婷桃色网 | 中文字幕蜜臀 | 亚洲欧洲精品一区 | 中文区中文字幕免费看 | 在线观看欧美一区 | 亚洲一区二区三区在线 |