通过前面对数据流和通讯方案的分析,按照自顶向下的原则,我们对信号处理单元进行功能分解,将其分解到下面的各个单元中,见图2。
通过功能分解,我们可以看到,单元内部构造可以分为三个部分:一部分对栅控信号进行处理;另一部分对故障信号进行处理;最后一部分用于产生控制故障信号发送的时钟。
从图2我们可以发现栅控信号处理部分与故障信号处理部分都含有功能相同单元:校验位生成单元、数据通信控制单元及锁存单元,因此可以对以上这些单元进行参数化设计。在参数化设计以前,我们还需要构造一些公共的基本元件,如触发器、寄存器、计数器和同步器等。这以后,我们就可以对前面提到的功能相同的单元进行参数化设计。
在进行参数化设计以前,我们需要对各功能单元的输入输出信号进行分析以确定信号使用的数据类型。由于IGBT控制问题的特殊性,在这里我们统一使用Bit和Bit-vector型数据。Bit型数据只有两种状态:“0”和“1”,可以有效地防止多态数值系统给控制和编程带来的麻烦。
在进行传统的电子线路设计时,设计师的工作是按电路原理图将各个单元电路和器件连接起来,形成一个完整的系统。而在利用VHDL设计电路时,设计师所要完成的不过就是将那些用VHDL语言描述的单元电路和器件连接起来。在这个意义上,利用VHDL语言进行设计与利用传统方法设计没有太大的区别,但采用自顶向下的设计方法时,VHDL具有无可比拟的优越性。作为一种硬件描述语言? VHDL语言有别于一般的计算机语言。它既有并行执行的语句,又有只能顺序执行的语句。利用VHDL这种特性,我们可以将整个系统分成若干个相对比较独立的模块来进行电路设计。在下面的程序中,进程COUNTER描述了一个16位计数器,它通过对40MHz时钟进行分频,产生进程CONTROLLER所需的2.5MHz时钟。进程CONTROLLER构造了一个发送控制计数器,它通过对进程COUNTER所产生的时钟信号进行计数,产生故障信号的发送控制信号。
CONTROLLER: PROCESS (reset, Tclk)
VARIABLE scit_v:BIT_VECTOR(5DOWNTO 0):=″000000″;
BEGIN
IF (reset='0') THEN
scit_v:=″000000″?
ELSIF (Tclk'EVENT AND Tclk='1'?
THEN
IF(scit_v<=″000111″)THEN
IF(tdEMPTY_s='0')THEN
scit_v:=″001000″;
ELSE
scit_v:=″000000″;
END IF;
ELSE
scit_v:=scit_v+1;
END IF;
END IF;
scit<=scit_v;
END PROCESS;
COUNTER: PROCESS(clk,reset)
BEGIN
IF(reset='0')THEN
count_4<=″0000″;
ELSIF(clk'EVENTANDclk='1')
THEN
count_4<=count_4+1;
END IF;
END PROCESS;
通过上面的程序,对照图2,我们可以看到整个设计分为三层:基本元件层-功能单元层-顶层;用基本元件构成功能单元,再由功能单元组成整个系统。每完成一个模块的设计,便对其进行仿真测试,逐步加入各个构造模块,模块间通过一定的信号传递,构成整个系统。采用这种方法,仿真测试贯彻系统硬件设计的全过程,从而可以在系统设计早期发现设计中存在的问题。与传统电路设计后期进行仿真相比可大大缩短系统的设计周期,节约大量的人力和物力。
4 仿真与实验结果
图3是对上述芯片进行的仿真结果,Data代表来自IGBT的故障信号,仿真时Data输入值为“0101”,即“5”。由于通讯正常,a5a6为“11”,因此上述六位产生校验位为“1”,Txd输出为“0-1010110-1111”。Rxd输入为“0-1101111-1111”,Pcs?0,2,4?三位输出表达式为:aI AND cI ,pcs?1,3,5?三位输出表达式为:?NOT a1 ?AND c1,因此Pcs?0,1,2,3,4,5?输出为“011001”,即“19”。通过对仿真结果的分析,可以看到设计满足功能需要。该芯片已成功地用于某型号的大功率变频调速装置中。
通过上面的设计,整个PWM信号与故障信号传输通路只需3片CPLD芯片就可实现。系统电路的体积大为缩小,从而提高了系统的可靠性。CPLD的应用缩短了系统的设计周期,降低了开发成本。CPLD与光纤的结合是解决PWM信号长距离传输中准确性和可靠性的有力保障。
1.部分资源来自网络,经ET电子归类整理,旨在服务电子爱好者并无商业目的,不保证正确性与完整性.
2.如果您觉得本站资源对您有用,请告知您的好友,用搜索引擎搜"ET电子"即可.

