在WinCupl中创建一个简单的2位异步计数器

时间:2010-06-07 17:27:32

标签: embedded atmel

/* 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芯片。

3 个答案:

答案 0 :(得分: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输出。

答案 1 :(得分:0)

Wincupl是一种原始的vhdl,但我现在已经弄明白了。我只需要将“.d”附加到输出变量上,然后将时钟连接到引脚#1和接地引脚#11。是的,我必须与GAL16v8和WinCUPL文档保持密切联系,以便全面了解。

答案 2 :(得分:0)

/ ********输出密码********** /

PIN 14 = Q1.d;

PIN 15 = Q2.d;

Q1.ck = clock;

!Q1.d = Q1;

Q2.ck =!Q1;

!Q2.d = Q2;

这会创建一个异步纹波计数器,使用D触发器以二进制计数。