在 WinCupl 中制作一个简单的 2 位异步计数器
Posted
技术标签:
【中文标题】在 WinCupl 中制作一个简单的 2 位异步计数器【英文标题】:Making a Simple 2-Bit Asynchronous counter in WinCupl 【发布时间】:2010-06-07 17:27:32 【问题描述】:/* INPUT PINS */
PIN 1 = clock; /* clock input*/
/**************** OUTPUT PINS *********************/
PIN 14 = Q1 ; /*output*/
PIN 15 = Q2 ; /*output*/
Q1.ck = clock;
Q1.d = !Q1;
Q2.d = !Q2;
这是我的代码,输出引脚下方的两行创建了一个 1 位纹波计数器,但我不确定如何将第一个触发器的输出转换为第二个触发器的时钟输入。我正在尝试编程的芯片是 Atmel ATF750C 芯片。
【问题讨论】:
它是 Atmel 的 PLD,名为 Wincupl。 【参考方案1】:该器件不允许为各个触发器单独定义时钟。引脚 1 的时钟输入是器件中所有触发器的共享时钟。您可以尝试以下方法:
Device = G16V8;
/* Inputs */
Pin 1 = CLK; /* clock source */
Pin 11 = GND; /* ground this for registered operation */
/* Outputs */
Pin 12 = Q0;
Pin 13 = Q1;
Pin 14 = Q2;
Pin 15 = Q3;
/* Equations */
!Q0.d = !Q3;
Q0.oe = 'b'1; /* output enabled - also default */
!Q1.d = Q0;
Q1.oe = 'b'1; /* output enabled - also default */
!Q2.d = Q1;
Q2.oe = 'b'1; /* output enabled - also default */
!Q3.d = Q2;
Q3.oe = 'b'1; /* output enabled - also default */
注意:以上示例将提供一个 4 位波纹二进制计数器/除法器。 例如:一个 8MHz 时钟输入将被 8 分频,从而在每个 Q 引脚上产生 4 个移位的 1MHz 输出。
【讨论】:
【参考方案2】:Wincupl 是一种原始的 vhdl,但我现在已经弄明白了。我只需要将“.d”附加到我的输出变量,然后将我的时钟连接到引脚 #1 和接地引脚 #11。是的,我确实必须熟悉 GAL16v8 和 WinCUPL 文档才能弄清楚。
【讨论】:
【参考方案3】:/******** 输出引脚 ************/
PIN 14 = Q1.d;
PIN 15 = Q2.d;
Q1.ck = 时钟;
!Q1.d = Q1;
Q2.ck = !Q1;
!Q2.d = Q2;
这会创建一个异步纹波计数器,使用 D 触发器以二进制形式向上计数。
【讨论】:
但是,即使在模拟中工作,它仍然存在问题,但在芯片本身上不起作用。我不知道为什么。以上是关于在 WinCupl 中制作一个简单的 2 位异步计数器的主要内容,如果未能解决你的问题,请参考以下文章