查看: 2681|回复: 5

vhdl语言中的循环问题

[复制链接]

该用户从未签到

发表于 2013-3-26 21:45:27 | 显示全部楼层 |阅读模式
分享到:
小弟想用VHDL语言编写一个类似函数发生器的东西,要产生类似方波的波形,只是高电平的幅值和持续时间均要求是可变的,高电平的间隔时间也要求是可变的,且高电平的次数也要是可以编程控制的,这个程序怎么编写啊,用VHDL语言的loop循环编译报错,实在是不知道该怎么办,求指导啊

示意图

示意图
回复

使用道具 举报

该用户从未签到

发表于 2013-3-26 21:46:19 | 显示全部楼层
在线求指导,万分感谢
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2013-9-2 09:06
  • 签到天数: 11 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2013-3-27 09:53:01 | 显示全部楼层
    利用clk时钟进程处理呢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2013-3-27 10:12:23 | 显示全部楼层
    yuying 发表于 2013-3-27 09:53
    利用clk时钟进程处理呢

    那是不是每一次计时时都得对系统时钟进行计数?这样代码会不会太繁琐
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2013-9-8 18:02
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2013-5-30 21:55:02 | 显示全部楼层
    方法一:使用RAM构建你的函数,根据你的精度分配一个RAM空间(深度为触发周期的最大值,宽度为你的幅值精度),然后进行地址控制。设置不同的函数来写RAM空间,然后触发计算,没读完一次RAM空间计算加一,这个计算可以作为你的触发次数。
    方法二:完全由硬件的比较完成(适用于方波),设置幅值,高电宽度,周期宽度,触发次数;设置时钟计数变量。然后就是写代码,模块一完成时钟计数,周期复位(时钟计数变量对时钟计数,直到计算值大于等于周期宽度复位时钟计算变量为0)。模块二完成幅值输出(时钟计数变量小于高电平设置值输出为高电平幅值,否则输出0(当然你也可以设置一个极性标志)),模块三完成触发次数计数(每次时钟计数变量为周期宽度时触发次数减一),模块四,判断输出有效(触发次数不为零时输出模块二的输出,否则输出0)。第四个模块为真实输出。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2013-6-6 17:14:27 | 显示全部楼层
    本帖最后由 小岛武夫 于 2013-6-6 17:16 编辑

    硬件描述语言里面每个进程的所有语句都是同时发生的,没有先后顺序,只有因果关系。
    比如写了一个
    a=1;
    b=a+1;
    a=b-2;
    那么综合出来的结果就等效于
    a=0;
    b=2;

    for语句等效于每个循环用一个语句来表示,例如
    for(i=0;i<4;i=i+1)
      a=1<<i;
    综合出来就是
    a[0]<=1;
    a[1]<=2;
    a[2]<=4;
    a[3]<=8;
    而且上面4个语句没有因果关系。
    由于for等效出来的语句同时同时发生且没有因果关系,所以for语句不能给同一个变量循环赋多个值。
    比如,下面这段语句,你们认为会综合出来什么?
    for(i=0;i<4;i=i+1)
      a=1<<i;
    显然,结果等效于
    a<=1;
    a<=2;
    a<=4;
    a<=8;
    由于4个语句同时发生且没有因果关系,所以就相当于给同一个变量在同一时刻赋不同的值。试问这种事情可能吗?
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-12-26 20:57 , Processed in 0.182046 second(s), 27 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.