14712|25

107

帖子

0

TA的资源

纯净的硅(高级)

楼主
 

任意整数分频,占空比为50%(VHDL) [复制链接]

--希望能对大家有帮助
--**************************************--
--程序名:任意整数分频,占空比为50%
--**************************************--
library ieee;
use ieee.std_logic_1164.all;
entity clk_div is
generic(n:integer:=2);--n的值是要分频的系数,n>=2
    port (clock : in std_logic:='0';
          clk_out : out std_logic);
end clk_div;
architecture sea of clk_div is
signal temp : std_logic:='0';

begin
process(clock,temp)
variable a,a1,a2 : integer range 0 to n;
variable temp1,temp2 : std_logic:='0';
begin
if (n rem 2)=1 then
if rising_edge(clock) then
    if a1=n-1 then a1:=0;temp1:='0';
    elsif a1<((n+1)/2-1) then temp1:='1';a1:=a1+1;
       elsif a1>=((n+1)/2-1) then temp1:='0';a1:=a1+1;
    end if;
end if;
if falling_edge(clock) then
    if a2=n-1 then a2:=0;temp2:='0';
    elsif a2<((n+1)/2-1) then temp2:='1';a2:=a1+1;
       elsif a2>=((n+1)/2-1) then temp2:='0';a2:=a2+1;
    end if;
end if;
temp<=temp1 or temp2;
elsif rising_edge(clock) then
    if a=(n/2-1) then a:=0;temp<=not temp;
    else a:=a+1;
    end if;
end if;
end process;
clk_out<=temp;
end sea;
--程序结束
此帖出自FPGA/CPLD论坛

最新回复

能问问  这个程序我怎么不能运行    一个未知错误      width mismatch in relational operator 我用的是max-plus-ii    是不是一定要用quartus??? 请高手作答  详情 回复 发表于 2012-5-24 13:24
点赞 关注
个人签名快乐是一天,不快乐也是一天,为什么不天天快乐呢
 

回复
举报

24

帖子

0

TA的资源

一粒金砂(高级)

沙发
 
正在找,号资料,呵呵不过还是谢谢楼主
此帖出自FPGA/CPLD论坛
 
 

回复

557

帖子

0

TA的资源

裸片初长成(初级)

板凳
 

请教:分频比的获取

刚刚开始学习VHDL,刚开始阅读这段代码,遇到的问题是这个硬件是如何获得分频系数的,
在entity段的三个语句中:
entity clk_div is
generic(n:integer:=2);--n的值是要分频的系数,n>=2
    port (clock : in std_logic:='0';
          clk_out : out std_logic);
end clk_div;

在n的声明中已将 n 确定为整型数,且 赋值为2 (n:=2),  此后代码中对n是怎样继续处理的。如果n是分频比,也不再处理,那这个电路如何实现变n分频工作的。
第二个问题是,在port的指定中,只有时钟输入和输出,而没有与分频比对应的引脚输入,那么在实现的硬件如何输入分频比信息。
所提问题肯定特别初级,希望得到帮助。


[ 本帖最后由 xiaoxif 于 2009-5-13 16:51 编辑 ]
此帖出自FPGA/CPLD论坛
 
 
 

回复

325

帖子

0

TA的资源

裸片初长成(初级)

4
 

个人感觉对n的理解

在上面提到的代码中,若是一段N分频代码,他的意思其实是可以通过改变参数N来实现,而不用到代码中去改其他参数,也相当于一段通用代码。并非上面提到的此段代码可以实现任何分频
此帖出自FPGA/CPLD论坛

赞赏

1

查看全部赞赏

个人签名科技应该让生活变得更简单!
 
 
 

回复

2498

帖子

0

TA的资源

至上芯片

5
 
同意楼上的,N这是一个函数的参数而已,默认的为2
此帖出自FPGA/CPLD论坛
个人签名我的邮箱gaoxiaoan123@163.com!回帖是一种美德!互相帮助,共同进步!
口头禅:生活在于创造机会,把握机会!
 
 
 

回复

2498

帖子

0

TA的资源

至上芯片

6
 

回复 楼主 Sea_eeworld 的帖子

刚刚挖到10个芯币,在回来顶一个!
此帖出自FPGA/CPLD论坛
个人签名我的邮箱gaoxiaoan123@163.com!回帖是一种美德!互相帮助,共同进步!
口头禅:生活在于创造机会,把握机会!
 
 
 

回复

557

帖子

0

TA的资源

裸片初长成(初级)

7
 
原帖由 wenhuawu 于 2009-5-13 19:06 发表
在上面提到的代码中,是一段N分频代码,他的意思其实是可以通过改变参数N来实现,而不用到代码中去改其他参数,也相当于一段通用代码。并非上面提到的此段代码可以实现任何分频



读了这段代码和4楼的指点,收获很大,谢谢各位。
做个初学者总有点点细抠,唯恐遗漏的心态,可能还会提出些很低级的问题。拜托大家耐心指教。



回复后,又仔细地品味这段代码,这里不得不重新编辑这段回复来修正自己的意见(例如占空系数的处理)。下面报告一下学习心得,请指教:
1、代码中分成了两个大部分:偶数分频和奇数分频的处理;而在奇数分频中,为了获得50%的分频比,特意加入了对时钟下降沿的响应,这是这段代码精华的所在
2、对应以上三块分频处理中,分别设置了三个指针(a\a1\a2)和中间信号(temp\temp2\temp2)
3、每个模块,都用中间参数a”盯住“ 半点 n/2 (代码中使用(n+1)/2-1 这个具体数值)和满点n(代码中使用了n-1)这两个点来监视计数过程,从而(间接地)控制输出时钟的状态;
具体说,就是n=奇数时;满n复位,半n置位;n=偶数时,在半n(自然包括了满n)时取反。
4、为获得50%的占空比,充分利用了时钟的两个沿,巧妙的配合了一个简单的或运算,就解决了奇数分频比条件下的50% 精确占空系数问题(这样,从原理上说这个精度只受输入时钟占空比的影响)。

现在还有两个问题请教各位:
1、可否在port 上设置若干bit位,作为n的实际控制,这样就可以实现74系列或CMOS系列的通用变N分频器设计;
2、请教:有没有这个代码设计的综合的测试评价结果。

再次表示对楼主和楼上各位的感谢!


[ 本帖最后由 xiaoxif 于 2009-5-14 02:27 编辑 ]
此帖出自FPGA/CPLD论坛
 
 
 

回复

190

帖子

0

TA的资源

裸片初长成(初级)

8
 
VHDL还没学,听前辈们说,这语言很不错,有时间也去学学
此帖出自FPGA/CPLD论坛
 
 
 

回复

325

帖子

0

TA的资源

裸片初长成(初级)

9
 

回复 7楼 xiaoxif 的帖子

我见过用BIT来控制分频比的,但是那样好像都不是占空比50%的,而且分频比都是2的次方。本文楼主提到的程序优点主要就是不管奇数还是偶数分频都实现了50%的占空比。当然用BIT分频到底能不能实现50%占空比分频,还不能确定,因为只是我自己还没有见过,平时也太懒没有去多想。
此帖出自FPGA/CPLD论坛

赞赏

1

查看全部赞赏

个人签名科技应该让生活变得更简单!
 
 
 

回复

2113

帖子

0

TA的资源

裸片初长成(初级)

10
 
收获很大啊
细细研读
此帖出自FPGA/CPLD论坛
 
 
 

回复

107

帖子

0

TA的资源

纯净的硅(高级)

11
 

回复 板凳 xiaoxif 的帖子

我来回答 xiaoxif  的两个问题:
"现在还有两个问题请教各位:
1、可否在port 上设置若干bit位,作为n的实际控制,这样就可以实现74系列或CMOS系列的通用变N分频器设计;
2、请教:有没有这个代码设计的综合的测试评价结果。"

回答1:可以用bit位来实现对n的控制,在结构体中将bit位的值转换为十进制赋给n 就行了,不过这个时候的n是全局变量(shared variable)或是信号量;
回答2:这段代码我当时只是作了功能和时序仿真,综合没有问题,在开始学VHDL时,我看到别人的任意整数分频,占空比不是50%,而占空比不是50%的分频很好实现,但要实现占空比为50%的分频,我当时确实费了不少时间.我在画时序图时,将时序逻辑与组合逻辑结合起来,才写出了上面的程序.

好久以前写的了,它可能还可以被优化,呵
分频程序用得很多,希望大家能多多讨论,共同进步!
此帖出自FPGA/CPLD论坛

赞赏

1

查看全部赞赏

个人签名快乐是一天,不快乐也是一天,为什么不天天快乐呢
 
 
 

回复

557

帖子

0

TA的资源

裸片初长成(初级)

12
 
原帖由 wenhuawu 于 2009-5-14 08:35 发表
我见过用BIT来控制分频比的,但是那样好像都不是占空比50%的,而且分频比都是2的次方。本文楼主提到的程序优点主要就是不管奇数还是偶数分频都实现了50%的占空比。当然用BIT分频到底能不能实现50%占空比分频,还不能 ...


你对我提出的问题理解错了。

我的意思是说,能否在这段代码基础上进行以下扩展,来实现一个独立的占空比为50%的通用可变N分频器
在port中增加与n对应的若干位输入,从而实现完整的变N分频器。例如,增加8个bit输入b0-b7,实现分频从2到255范围的占空比为50%的通用变N分频器,只是需要增加一段代码(即:对应的电路)完成b0-b7到n的变换译码就可以了。

这种扩充是不会影响原设计的占空比性能的,我觉得原来的代码没问题(详见:在7楼的回复),也就无所谓能不能保证这个占空系数了。
此帖出自FPGA/CPLD论坛
 
 
 

回复

557

帖子

0

TA的资源

裸片初长成(初级)

13
 
原帖由 Sea_eeworld 于 2009-5-14 21:35 发表
我来回答 xiaoxif  的两个问题:
"现在还有两个问题请教各位:
1、可否在port 上设置若干bit位,作为n的实际控制,这样就可以实现74系列或CMOS系列的通用变N分频器设计;
2、请教:有没有这个代码设计的综合的测试 ...


写上一段文字期间,先生也几乎同时做了留言,谢谢理解。就是这个意思,谢谢了。
这段代码精华所在就是在对奇数分频比的50%处理上,巧妙之处有二:1、利用下降沿,做了一个对时钟相位180度的同步跟进的第二个分频器,可以叫做”辅助“或者叫”副“分频器吧!2、利用OR作最后逻辑处理。
这样的电路在许多应用中是很有价值的。本人见识少,自己此前没有见过类似的设计,果真如此,这可是有IP的味道了

谢谢你。

[ 本帖最后由 xiaoxif 于 2009-5-14 22:44 编辑 ]
此帖出自FPGA/CPLD论坛
 
 
 

回复

325

帖子

0

TA的资源

裸片初长成(初级)

14
 

说说任意分频

上次看到一IC,他可以把晶振的输入分几种频然后输出,就相当于74系列那样的器件,接不同的口就分为不同的频,是不是可以参考一下那种器件的原理来实现N分频
此帖出自FPGA/CPLD论坛
个人签名科技应该让生活变得更简单!
 
 
 

回复

557

帖子

0

TA的资源

裸片初长成(初级)

15
 
原帖由 wenhuawu 于 2009-5-15 08:39 发表
上次看到一IC,他可以把晶振的输入分几种频然后输出,就相当于74系列那样的器件,接不同的口就分为不同的频,是不是可以参考一下那种器件的原理来实现N分频


作为初学者,阅读Sea_eeworld的这段代码,最初主要还是为了学习(VHDL),但是,在其中发现楼主的巧妙构思后,冒昧地提出这个设计能够更加完善的期待,以便我这样的初学者能有一个学习和欣赏更为完美设计的机会。

的确有许多N分频电路,例如早在80年代早期就出现了用于收发设备PLL中的CMOS可变N分频器,并且广泛地集成在很多系统中。参考现成的设计不失为一个好办法不过我更喜欢楼主的主动方式。这些年的设计实践表明:逻辑实现本身的灵活性和多样性必然导致了设计的个性化,于是就出现了这样的情况:在可以拿到完整的资料前提下,)读懂别人的设计有时候比自己设计还要费劲,要耗费更多的时间和精力。现在可编程(特别是现场可编程)器件和与之相适应的便捷的软硬件工具、环境,为我们营造了一个摆脱束缚、积极思维的环境。因此我欣赏楼主的方式:主动性--用理论知识、用实际经验的认真主动的思维去主导自己的设计,这也应当是提高个人和团队技术素质的重要侧面。

另外请教一个与此不相关的问题:
在你的每篇回复的下端,都有一句“科技应该让生活变得更简单!”,能告诉我是怎么加进去的吗?谢谢。

[ 本帖最后由 xiaoxif 于 2009-5-15 12:35 编辑 ]
此帖出自FPGA/CPLD论坛
 
 
 

回复

2万

帖子

71

TA的资源

管理员

16
 
这个是个人签名,方法如下:

右上角的栏目里,点击“控制面板”,选择“编辑个人资料”,再选择“个性化页面”,在签名栏目中填充自己想要填写的信息,如图所示:

可以加图片、文字或者特效,具体可以参考“个人签名”栏目左侧的“Discuz!代码可用

此帖出自FPGA/CPLD论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 
 

回复

325

帖子

0

TA的资源

裸片初长成(初级)

17
 

回复 15楼 xiaoxif 的帖子

说得是呀,看别人程序比自己写一个还要麻烦!如SOSO说的,就是在控制面板上的编辑个人资料里的个人签名!

[ 本帖最后由 wenhuawu 于 2009-5-16 08:42 编辑 ]
此帖出自FPGA/CPLD论坛
个人签名科技应该让生活变得更简单!
 
 
 

回复

107

帖子

0

TA的资源

纯净的硅(高级)

18
 

回复 15楼 xiaoxif 的帖子

好久没有来了,最近上网不太方便!
别人的要参考,要不容易走弯路,呵呵
参考别人的,至少可以避免犯别人犯过的错误,呵
此帖出自FPGA/CPLD论坛
个人签名快乐是一天,不快乐也是一天,为什么不天天快乐呢
 
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

19
 

回复 楼主 Sea_eeworld 的帖子

收益匪浅~~~谢谢
此帖出自FPGA/CPLD论坛
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(高级)

20
 
是个好东西啊  以前学的东西只是皮毛啊
此帖出自FPGA/CPLD论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表