完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,我在显示器上显示了一个正方形,现在我打算通过一个按钮改变它的位置。
但是代码不起作用,当我模拟测试台时,这个按钮也没有被模拟。 我在此附上了测试台和.ucf文件。 请帮忙 ! 代码: 模块vga_bar(输入线clk,复位,输入[1:0] btn,输出线hsync,vsync,输出[2:0]红色,//三位信号驱动颜色redoutput [2:0]绿色,//三 位信号驱动颜色greenoutput [1:0]蓝色,//两位信号驱动蓝色(人眼对蓝色不太敏感)输出reg video_on); //定义constantslocalparam HD = 800; //水平显示arealocalparam HF = 56; //前廊(右边界)localparam HB = 64; //右门廊(左边界)localparam HR = 120; // horizontal retracelocalparam VD = 600; //垂直显示arealocalparam VF = 37; //前廊(下边框)localparam VB = 23; //后门廊(上边框)localparam VR = 6; // vertical retracelocalparam h_end = 1040; //总水平timinglocalparam v_end = 666; // total vertical timinglocalparam BAR_X_L = 600; localparam BAR_X_R = 603; localparam BAR_Y_SIZE = 72; localparam BAR_V = 4; // bar移动sizelocalparam MAX_Y = 600; //水平和垂直counterreg [10:0] h_count_reg,v_count_reg; //注册顺序水平和垂直countersreg [10:0] h_count_next,v_count_next; // reg v_sync_reg,h_sync_reg; // wire v_sync_next,h_sync_next; reg v_sync_next,h_sync_next = 0;总是@(posedge clk,posedge reset)if( reset)beginv_count_reg h_count_reg // v_sync_reg // h_sync_reg endelsebeginv_count_reg h_count_reg // v_sync_reg // h_sync_reg end //水平和垂直counteralways @(posedge clk)beginif(h_count_next begin h_count_next endelsebeginh_count_next if(v_count_next v_count_next elsev_count_next endend //水平和垂直同步信号@always @ (posedge clk)if(h_count_reg h_sync_next elseh_sync_next // VSync逻辑总是@(posedge clk)if(v_count_reg v_sync_next elsev_sync_next分配hsync = h_sync_next; assign vsync = v_sync_next; reg h_video_on,v_video_on; //这些寄存器确保显示信号被发送 只有当像素位于显示器的显示区域内时才会显示逻辑路径@(posedge clk)if((h_count_reg> = HR) + HF)&& (h_count_regh_video_on elseh_video_on //垂直逻辑总是@(posedge clk)if((v_count_reg> = VR + VF)&&(v_count_reg v_video_on elsev_video_on always @(posedge clk)if(h_video_on&& v_video_on)video_on elsevideo_on reg [ 9:0] pixel_x,pixel_y; //注册以描述显示区域内像素的当前位置。总是@(posedge clk)if(h_video_on)pixel_x elsepixel_x总是@(posedge clk)if(v_video_on)pixel_y elsepixel_y // BAR TOP, BOTTOM BOUNDARYwire [10:0] bar_y_t,bar_y_b; //用于跟踪顶部边界的登记者(x位置是固定的)reg [10:0] bar_y_reg,bar_y_next;总是@(posedge clk,posedge reset)if(reset)beginbar_y_reg endelsebar_y_reg wire refr_tick; assign refr_tick =((pixel_y == 601)&&&(pixel_x == 0));指定bar_y_t = bar_y_reg;指定bar_y_b = bar_y_t + BAR_Y_SIZE - 1; // barwire bar_on中的像素;指定bar_on =(( BAR_X_L wire [2:0] bar_rgb; assign bar_rgb = 3'b111; // new bar y -positionways @(*)begin bar_y_next = bar_y_reg; // no moveif(refr_tick)if(b tn [1]& (bar_y_b bar_y_next = bar_y_reg + BAR_V; //向下移动if(btn [0]&(bar_y_t> BAR_V))bar_y_next = bar_y_reg - BAR_V; // move upend // color outputreg [7:0] coloroutput; // 8位寄存器,用于描述必须显示哪种颜色,但仅在打开video_on信号时。另外@(posedge clk)if(~video_on)coloroutput elsebeginif(bar_on)coloroutput [4:2] elsecoloroutput [7:0] endassign red = coloroutput [7:5];指定green = coloroutput [4:2];指定blue = coloroutput [1:0]; endmodule sq_testbench.txt 1 KB sq_ucf.txt 1 KB |
|
相关推荐
4个回答
|
|
嗨,什么不行?
你能更具体一点吗? 谢谢,维杰----------------------------------------------- ---------------------------------------------请将帖子标记为 一个答案“接受为解决方案”,以防它有助于解决您的查询。如果一个帖子引导到解决方案,请给予赞誉。 |
|
|
|
|
|
|
|
你好
在模拟中,您需要在初始GSR延迟100ns后驱动按钮输入。 在您的tb中进行此更改并尝试simulaton。 问候,萨蒂什----------------------------------------------- --- --------------------------------------------请注意 - 如果提供的信息有用,请将答案标记为“接受为解决方案”。给予您认为有用的帖子。感谢.-- ---------------------------- --------------------- ---------------------- |
|
|
|
当我按下两个按钮时没有任何反应。
我希望按下这两个按钮时,条块会上下移动。 我不知道我编写这段代码的逻辑是错误的还是有任何去抖动效果。 强烈建议您花时间学习如何使用逻辑模拟来调试您的设计。 如果您努力成为一名成功的逻辑设计师,这绝对必须学习这项技能,并且您将在整个职业生涯中不断使用这项技能。 像这样的一点点逻辑是一个很好的学习例子。 - 鲍勃埃尔金德 签名:新手的自述文件在这里:http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369总结:1。 阅读手册或用户指南。 你读过手册了吗? 你能找到手册吗?2。 搜索论坛(并搜索网页)以寻找类似的主题。 不要在多个论坛上发布相同的问题。 不要在别人的主题上发布新主题或问题,开始新的主题!5。 学生:复制代码与学习设计不同.6“它不起作用”不是一个可以回答的问题。 提供有用的详细信息(请与网页,数据表链接).7。 您的代码中的评论不需要支付额外费用。 我没有支付论坛帖子的费用。 如果我写一篇好文章,那么我一无所获。 |
|
|
|
只有小组成员才能发言,加入小组>>
2163 浏览 7 评论
2605 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2079 浏览 9 评论
3149 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2193 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
423浏览 1评论
1523浏览 1评论
在使用xc5vsx95T时JTAG扫片不成功,测量TDO无信号输出
2177浏览 0评论
508浏览 0评论
1641浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-24 16:52 , Processed in 0.977651 second(s), Total 47, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号