在 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 位异步计数器的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中制作可设计的 UIImage

哪些是同步通信 哪些是异步通信

在 Qt 中制作关于 GUI 窗口的游戏

有趣的css—简单的下雨效果2.0版

急!!!!如何通过python制作一个简单的录音机,录制自己的声音采用8k采样,16位量化编码,观察其数值?

HandlerThread 创建一个异步的后台线程