搜索
bottom↓
回复: 12

VHDL简单程序 求帮忙看看 顺便谁知道用WAIT怎么实现1S的延...

[复制链接]

出0入0汤圆

发表于 2013-8-29 13:15:37 | 显示全部楼层 |阅读模式
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity led_four is
port(clk:in bit;
led:out std_logic_vector(7 downto 0));
end led_four;
architecture behave of led_four is
begin
process(clk)
variable temp1: integer range 0 to 9;
begin
if(clk'event and clk='1')then
temp1:=temp1+1;
if(temp1=9) then  
temp1:=0;
end if;
end if;
case temp1 is
when 0=>led<="11111111";
when 1=>led<="11111110";
when 2=>led<="11111101";
when 3=>led<="11111011";
when 4=>led<="11110111";
when 5=>led<="11101111";
when 6=>led<="11011111";
when 7=>led<="10111111";
when 8=>led<="01111111";
when others=>null;
end case;
end process;
end behave;
程序就是这样的 ,稍到开发板上等八个流水灯都是微亮,程序写的是流水灯就是一次亮的,求帮忙看看哪里有错误,感激不尽,顺便谁知道用WAIT怎么实现1S的延迟啊

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入17汤圆

发表于 2013-8-29 13:23:48 | 显示全部楼层
你的clk是多大频率的啊?如果频率很高的话,先把时钟分频到1HZ,然后再用来当流水灯的时钟。
另外,你所谓的微亮有点不可思议,因为即便你的频率很高,LED输出的占空比也有8/9,跟全亮的效果应该差不多的
wait我没有用过,我一般都是通过计数器来延时的

出0入0汤圆

 楼主| 发表于 2013-8-29 13:28:07 | 显示全部楼层
流氓马 发表于 2013-8-29 13:23
你的clk是多大频率的啊?如果频率很高的话,先把时钟分频到1HZ,然后再用来当流水灯的时钟。
另外,你所谓 ...

能不能加个QQ  我QQ 380128581  不懂得可以请教  谢谢啦

出0入0汤圆

发表于 2013-8-29 13:30:26 | 显示全部楼层
WAIT是仿真用的吧?

出0入17汤圆

发表于 2013-8-29 13:35:36 | 显示全部楼层
Someshy 发表于 2013-8-29 13:28
能不能加个QQ  我QQ 380128581  不懂得可以请教  谢谢啦

公司不让上qq,有问题在这里问吧,这样也可以方便后来的人。

出0入0汤圆

 楼主| 发表于 2013-8-29 13:45:54 | 显示全部楼层
流氓马 发表于 2013-8-29 13:35
公司不让上qq,有问题在这里问吧,这样也可以方便后来的人。

好的  原来是已经工作了的大哥,你好  还有一点疑问就是怎么修改时钟脉冲周期啊   我用的是QUATUSⅡ   这点还求解答

出0入0汤圆

 楼主| 发表于 2013-8-29 13:46:47 | 显示全部楼层
lans0625 发表于 2013-8-29 13:30
WAIT是仿真用的吧?

昂。。。我用的开发板   

出0入0汤圆

发表于 2013-8-29 13:52:24 | 显示全部楼层
这种2逼错误我也犯过,wait 2ns结果毛用都没有,老老实实写个分频器把gclk给分到1s吧。

出0入0汤圆

 楼主| 发表于 2013-8-29 13:57:46 | 显示全部楼层
marx 发表于 2013-8-29 13:52
这种2逼错误我也犯过,wait 2ns结果毛用都没有,老老实实写个分频器把gclk给分到1s吧。 ...

大哥。。。知音啊!时钟周期不能设置吗  我用的QUATUS II  最好能加下QQ 380128581

出0入17汤圆

发表于 2013-8-29 14:01:44 | 显示全部楼层
  1. module clk_gen (clock,clk_1us);                 
  2. input clock;//晶振时钟50M
  3. output clk_1us;
  4. reg clk_1us;
  5. reg [5:0] count;

  6. always @( posedge clock)
  7. begin
  8.     if(count>=49)
  9.         begin
  10.                   count<=0;
  11.         end
  12.     else
  13.         begin
  14.                 count<=count+1;
  15.                 if(count<=24)
  16.                         begin
  17.                                 clk_1us<=1;
  18.                         end
  19.                 else
  20.                         begin
  21.                                 clk_1us<=0;
  22.                         end
  23.         end
  24. end
  25. endmodule
复制代码
你可以根据这个改一下,这个是50MHZ晶振,输出1MHZ脉冲的程序.
你要是想输出1HZ,改几个数字就ok了

出0入0汤圆

 楼主| 发表于 2013-8-29 14:04:45 | 显示全部楼层
流氓马 发表于 2013-8-29 14:01
你可以根据这个改一下,这个是50MHZ晶振,输出1MHZ脉冲的程序.
你要是想输出1HZ,改几个数字就ok了 ...

大哥哥。。我用的是VHDL 亲    像这种修改时钟周期不能从软件上改吗  只有编程吗?   

出0入17汤圆

发表于 2013-8-29 14:22:15 | 显示全部楼层
Someshy 发表于 2013-8-29 14:04
大哥哥。。我用的是VHDL 亲    像这种修改时钟周期不能从软件上改吗  只有编程吗?    ...

兄弟,一样的原理,我这个代码很容易懂的吧~

出0入0汤圆

 楼主| 发表于 2013-8-29 16:14:40 | 显示全部楼层
流氓马 发表于 2013-8-29 14:22
兄弟,一样的原理,我这个代码很容易懂的吧~

已经改好了  谢谢了!!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 05:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表