搜索
bottom↓
回复: 14

请教:用FPGA产生一个方波,为什么波形是倾斜的?(已解决)

[复制链接]

出5入8汤圆

发表于 2011-5-5 19:13:46 | 显示全部楼层 |阅读模式
请教大家,我用VHDL编写程序,想要产生一个高低电平可控的PWM波。程序写完后在板子上实测波形有畸变:

(Ô­ÎļþÃû:IMG_0081.JPG)
程序如下:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity pwm_module is
PORT(
        reset:in STD_LOGIC;
        clk:in STD_LOGIC;--1KHZ
        pwm_on:in STD_LOGIC_VECTOR(7 DOWNTO 0);
        pwm_off:in STD_LOGIC_VECTOR(7 DOWNTO 0);
        pwm_en:in STD_LOGIC;
        pwm_pulse:out STD_LOGIC
        );
end pwm_module;

architecture dev of pwm_module is
signal pwm_on_temp:STD_LOGIC_VECTOR(7 DOWNTO 0);
signal pwm_off_temp:STD_LOGIC_VECTOR(7 DOWNTO 0);
begin
        process(pwm_en,clk,reset,pwm_on,pwm_off)
        variable cnt:STD_LOGIC_VECTOR(8 DOWNTO 0);
        begin
                if(reset='0')then
                        cnt:="000000000";
                        --pwm_on_temp<="00001010";
                        --pwm_off_temp<="00001010";
                elsif(rising_edge(clk))then
                        if(cnt=(pwm_on_temp+pwm_off_temp-1))then
                                cnt:="000000000";
                                pwm_pulse<='1';
                        elsif(cnt<(pwm_on_temp+pwm_off_temp-1))then
                                if(cnt=(pwm_on_temp-1))then
                                        pwm_pulse<='0';
                                end if;
                                cnt:=cnt+1;
                        end if;
                end if;
                if(pwm_en='1')then
                        pwm_on_temp<=pwm_on;
                        pwm_off_temp<=pwm_off;
                        cnt:="000000000";
                end if;
        end process;
end dev;
我思考了半天,没想明白为什么数字信号会出来这样的波形。也曾怀疑是硬件问题,但是我把输出换了好几个口都是这样,但是用相同的口输出一个分频的简单程序,波形就很好。不知道坛子里的弟兄们有人遇到过这样的情况吗?

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

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

发表于 2011-5-5 19:23:21 | 显示全部楼层
回复【楼主位】anning
-----------------------------------------------------------------------

为什么波形是倾斜的?
不会使用示波器所致。
将示波器输入通道的耦合方式由“AC”(交流)改为“DC”(直流)即可。

出5入8汤圆

 楼主| 发表于 2011-5-5 19:36:28 | 显示全部楼层
回复【1楼】JQ_Lin  
-----------------------------------------------------------------------

谢谢大侠!一直以为是DC耦合,不知道什么时候被别人改了。我还以为是我软件编写的问题,想破了脑袋也没想出来。还是JQ_Lin提醒的是。

出0入0汤圆

发表于 2011-5-5 20:10:40 | 显示全部楼层
回复【2楼】anning
一直以为是DC耦合,不知道什么时候被别人改了。我还以为是我软件编写的问题,想破了脑袋也没想出来。
-----------------------------------------------------------------------

一旦看到这种波形,应该立马想到有隔直电容存在。
“AC”耦合方式,其实就是串接了一个电容器。
当然还应当知道,在有了隔直电容后,波形是如何变成那样的。
只有在懂得这个道理之后,才能做到,一旦看到这种波形,立马想到有隔直电容存在。

出0入0汤圆

发表于 2011-5-5 21:35:17 | 显示全部楼层
回复【3楼】JQ_Lin  
-----------------------------------------------------------------------

受教~~~哈哈 虽然没碰到过这种情况 但是提了个醒 方便以后解决

出0入0汤圆

发表于 2011-5-7 11:46:02 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-7 18:42:18 | 显示全部楼层
学习了

出0入0汤圆

发表于 2011-5-9 19:23:46 | 显示全部楼层
谢谢一楼

出0入0汤圆

发表于 2011-5-9 19:41:29 | 显示全部楼层
虚心受教

出0入0汤圆

发表于 2011-5-10 09:44:02 | 显示全部楼层
谢谢,的确受益匪浅

出0入0汤圆

发表于 2011-6-6 21:44:53 | 显示全部楼层
谢谢,学习了

出0入0汤圆

发表于 2011-6-26 11:18:19 | 显示全部楼层
学习了 谢谢~

出0入0汤圆

发表于 2011-8-5 16:57:13 | 显示全部楼层
好好学习

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-10-4 03:11

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

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