日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

VGA显示正圆

發布時間:2025/3/16 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VGA显示正圆 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  接著上次的隨筆,既然VGA時序已經實現了,那么就顯示點東西看看吧。

  想顯示個圓,但是無從下手,參考了這篇文章:https://user.qzone.qq.com/1241003385/blog/1543804422

  仔細閱讀了這篇文章后才理解所謂顯示圓的算法很簡單,圓的標準方程是(x - a)?2?+ (y - b)?2?= r?2,只要控制顯示范圍滿足圓的方程就可以了。

  當(x-a)2+(y-b)2<=r2區域是圓內,(x-a)2+(y-b)2>=r2的區域就是圓外。

  這里顯示圓的半徑是50個像素點,并且以屏幕正中心為原點所以需要滿足條件:

  distance = (x-a)*(x-a) + (y-b)*(y-b) = (h_cnt-96-48 -320) *(h_cnt-96-48-320) +(v_cnt-2-33 -240) *(v_cnt-2-33 -240);

  其中96,48為行顯示區域以外,320為顯示行的中心,2,33為場顯示區域以外,320為顯示列的正中心。

  如果distance小于r2=(50)2=2500?,說明在圓內,否則在圓外。

  代碼如下:

  

  • module?vga_driver(??
  • ????clk?????????,??
  • ????rst_n???????,??
  • ????vga_hys?????,??
  • ????vga_vys?????,??
  • ????vga_rgb???????
  • );??
  • ??
  • parameter???????DATA_W??=?16;??
  • parameter???????LCD_GREEN?=?16'b00000_111111_00000;??
  • parameter???????LCD_WHITE?=?16'b11111_111111_11111;??
  • ??
  • input?????????clk??????;??
  • input?????????rst_n????;??
  • ??
  • output????????vga_hys????;??
  • output????????vga_vys????;??
  • output?[DATA_W-1:0]??vga_rgb????;??
  • ??
  • reg?????????????vga_hys;??
  • reg?????????????vga_vys;??
  • reg?????[DATA_W-1:0]vga_rgb;??
  • ??
  • reg?????[9:0]???cnt_hys;??
  • reg?????[9:0]???cnt_vys;??
  • reg??????[19:0]?distance;??
  • reg?????????????green_area;??
  • reg?????????????valid_area;??
  • ??
  • wire????????????add_cnt_hys;??
  • wire????????????end_cnt_hys;??
  • wire????????????add_cnt_vys;??
  • wire????????????end_cnt_vys;??
  • wire?????????????????vga_clk;??
  • ??
  • VGA_PLL?U0(??
  • ????.inclk0?(clk),??
  • ????.c0?????(vga_clk)??
  • );??
  • ??
  • ??
  • always?@(posedge?vga_clk?or?negedge?rst_n)begin??
  • ????if(!rst_n)begin??
  • ????????cnt_hys?<=?0;??
  • ????end??
  • ????else?if(add_cnt_hys)begin??
  • ????????if(end_cnt_hys)??
  • ????????????cnt_hys?<=?0;??
  • ????????else??
  • ????????????cnt_hys?<=?cnt_hys?+?1;??
  • ????end??
  • end??
  • ??
  • assign?add_cnt_hys?=?1;?????????
  • assign?end_cnt_hys?=?add_cnt_hys?&&?cnt_hys==?800-1;?????
  • ??
  • always?@(posedge?vga_clk?or?negedge?rst_n)begin??
  • ????if(!rst_n)begin??
  • ????????cnt_vys?<=?0;??
  • ????end??
  • ????else?if(add_cnt_vys)begin??
  • ????????if(end_cnt_vys)??
  • ????????????cnt_vys?<=?0;??
  • ????????else??
  • ????????????cnt_vys?<=?cnt_vys?+?1;??
  • ????end??
  • end??
  • ??
  • assign?add_cnt_vys?=?end_cnt_hys;?????????
  • assign?end_cnt_vys?=?add_cnt_vys?&&?cnt_vys==525-1?;?????
  • ??
  • always??@(posedge?vga_clk?or?negedge?rst_n)begin??
  • ????if(rst_n==1'b0)begin??
  • ????????vga_hys?<=?0;??
  • ????end??
  • ????else?if(add_cnt_hys?&&?cnt_hys?==?96-1)begin??
  • ????????vga_hys?<=?1;??
  • ????end??
  • ????else?if(end_cnt_hys)begin??
  • ????????vga_hys?<=?0;??
  • ????end??
  • end??
  • ??
  • always??@(posedge?vga_clk?or?negedge?rst_n)begin??
  • ????if(rst_n==1'b0)begin??
  • ????????vga_vys?<=?0;??
  • ????end??
  • ????else?if(add_cnt_vys?&&?cnt_vys?==?2-1)begin??
  • ????????vga_vys?<=?1;??
  • ????end??
  • ????else?if(end_cnt_vys)begin??
  • ????????vga_vys?<=?0;??
  • ????end??
  • end??
  • ??
  • always??@(*)begin??
  • ????distance?=?((cnt_hys-96-48-320)*(cnt_hys-96-48-320))+((cnt_vys-2-33-240)*(cnt_vys-2-33-240));??
  • end??
  • ??
  • always??@(*)begin??
  • ????green_area?=?distance?<?2500;??
  • end??
  • ??
  • always??@(*)begin??
  • ????valid_area?=?cnt_hys?>=?(96+48)&&cnt_hys?<(96+48+640)?&&?cnt_vys?>=?(2+33)&&cnt_vys<(2+33+480);??
  • end??
  • ??
  • always??@(posedge?vga_clk?or?negedge?rst_n)begin??
  • ????if(rst_n==1'b0)begin??
  • ????????vga_rgb?<=?16'h0;??
  • ????end??
  • ????else?if(valid_area)??
  • ????????begin??
  • ????????????if(green_area)??
  • ????????????????begin??
  • ????????????????????vga_rgb?<=?LCD_GREEN;??
  • ????????????????end??
  • ????????????else?begin??
  • ????????????????????vga_rgb?<=?LCD_WHITE;??
  • ????????????????end??
  • ????????end??
  • ????else?begin??
  • ????????????vga_rgb?<=?0;??
  • ????????end??
  • end??
  • ??
  • endmodule
  • 顯示效果如下圖
  • ?

  • 中間調試的過程中出現過錯誤,錯誤的顯示效果是:
  • ?

  • 經過排查發現問題出在distance定義的長度上,給distance賦值比自身長度大的數據,導致數據丟失就會產生這樣的結果,同樣的修改distance的長度反而有意外收獲。
  • ?

  • ?

  • ?

  • 轉載于:https://www.cnblogs.com/Librarian/p/10091944.html

    總結

    以上是生活随笔為你收集整理的VGA显示正圆的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 蜜桃av噜噜一区二区三区麻豆 | 亚洲最黄网站 | 亚洲乱码中文字幕 | 中文字幕无码日韩专区免费 | av老司机福利 | 福利片第一页 | 亚洲av人人澡人人爽人人夜夜 | 美国免费高清电影在线观看 | 色屁屁一区二区三区视频 | 极品少妇视频 | 涩涩网站免费 | 亚洲精品久久久久久动漫器材一区 | 毛片88 | 久久97精品久久久久久久不卡 | 超碰97人人在线 | 亚洲色图欧美日韩 | 韩国短剧在线观看 | 在线1区 | 午夜小视频在线播放 | 成人性生生活性生交3 | 日韩中文字幕高清 | 嫩草导航 | 狠狠狠狠狠狠干 | 国产色影院| 夜夜操天天 | 自拍偷拍第| 亚洲不卡电影 | 欧美一二三区视频 | 婷婷综合色 | 麻豆传媒观看 | 日韩三区在线 | 黑人一区二区 | 欧美成人国产va精品日本一级 | 大肉大捧一进一出好爽视频 | 男女性高潮免费网站 | 久久91久久 | 涩涩视频在线观看免费 | 一级黄色短片 | 国产一区二区免费 | 久久久久九九九 | 欧美网| 欧美三日本三级少妇99 | 成人欧美一区二区三区黑人一 | 亚洲综合少妇 | 激情成人综合网 | 四虎av在线播放 | 91午夜精品 | 99国内揄拍国内精品人妻免费 | 少妇闺蜜换浪荡h肉辣文 | 人妖天堂狠狠ts人妖天堂狠狠 | 人妻丰满熟妇av无码区免 | 欧美性生交xxxxx | 美女户外露出 | 情侣黄网站免费看 | 台湾一级视频 | 成年人看的免费视频 | 亚洲精品乱码久久久久久久久久久久 | 成年人黄色小视频 | 一级视频在线免费观看 | 成人欧美一区二区三区白人 | 原创少妇半推半就88av | 伦理黄色片| 国产精品永久久久久久久久久 | 亚洲乱码国产乱码精品精剪 | 日韩网站在线 | 日本一级三级三级三级 | 一区二区三区四区五区六区 | 欧美性视频在线 | 一区二区三区三区在线 | 日本少妇网站 | 久久久剧场 | 日本不卡二区 | 亚洲精品乱码久久久久久黑人 | 亚洲欧洲日本国产 | 国产女优在线播放 | 国产成人亚洲一区二区 | 国产91精品久久久久久久网曝门 | 亚洲一区二区视频在线 | 天堂…中文在线最新版在线 | 天干夜夜爽爽日日日日 | 少妇熟女一区二区 | 强开乳罩摸双乳吃奶羞羞www | 91久色蝌蚪 | 在线毛片网 | 亚洲精品综合在线 | 国产乡下妇女做爰毛片 | 国产综合久久久久 | 婷婷色九月 | 夜夜福利 | 久久麻豆av| 色哟哟在线免费观看 | chinese中国性按摩hd | 色婷婷狠狠干 | 99精品热视频 | 国产日韩欧美视频在线观看 | 国产欧美久久久精品免费 | 少妇搡bbbb搡bbb搡澳门 | 久操视频精品 | 蜜桃成人网 |