Month: February 2007

  • 交通灯控制器的设计——竞赛整理(二)

    由于是直接从word中复制过来的,图片无法导入,如果想查看全文,请点击这里下载PDF文档。 关键词 交通信号系统、VHDL语言、ispLEVER、Lattice、ispLSI1032E 题目要求 1. 路型:十字交叉 2. 相变周期:30s 3. 绿闪时间:5s 4. 黄灯时间:2s 5. 绿信比:1:2 6. 定时输入:256Hz TTL 7. 两位数码倒计时 8. 强制放行按钮:东西、南北方向(任意按钮解除) 摘要  本设计的红绿交通灯信号系统为模拟实际的十字路口交通信号灯。故外部硬件电路方面包括:两组红绿灯、两组七段显示器、一组手动与自动控制开关。软件方面:将红绿灯交通信号系统划分成若干个子电路,赋予VHDL程序代码实现,将各个小电路相连接。交通灯系统可以调整红绿灯电路的强制通行和复位,以增加灵活性。 一、设计状态转移图及软件模块图 1、绘制软件模块图 2、利用状态机绘制状态转移图 二、交通信号系统VHDL模块  该系统由四个子电路构成(如图):   (1) clk_gen 时钟脉冲发生电路(即分频电路) (2) count_down 倒计时控制电路 (3) traffic_mux 计数秒数选择电路 (4) traffic_fsm 红绿信号灯控制电路 1、 clk_gen 时钟脉冲发生电路     在红绿交通信号系统中,大多数的情况是通过自动控制的方式指挥交通的。此,为了避免意外事件的发牛,电路必须给一个稳定的时钟才能让系统正常运作。但为了配合高峰时段,防止交通拥挤。有时也必须使用手动控制,即让交警能够顺利指挥交通。clk_gen电路路最主要的功能就是产生—些额外的输出信号,井将其用做后续几个电路的使能控制与同步信号处理。 clk_gen时钟脉冲发生电路VHDL程序:   library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity clk_gen is  port( reset: in std_logic;   clk: in std_logic;   ena_two: in std_logic;…

  • 波形发生器的制作——竞赛整理(一)

    由于是直接从word中复制过来的,图片无法导入,如果想查看全文,请点击这里下载PDF文档。 关键词 运算放大器,正弦波   题目要求 1、  能产生正弦波、方波、三角波、锯齿波四种波形的波形发生器; 2、  输出波形的频率为1KHz; 3、  要求用模拟运放电路实现(规定用LM324设计) 4、  要求波形的失真度尽量小 5、  用Protel原理图仿真工具完成仿真; 6、  在实验班上安装并完成电路调试。   摘要 本设计由三个模块电路构成:方波、三角波发生器,后级正弦波发生器和脉冲波、锯齿波发生器。 前级由电压比较器产生方波,对其输出波形进行一次积分产生三角波,三角波再进行一次积分产生正弦波。而对三角波电路增加二极管,控制三角波的逆程冲放电时间,产生脉冲波,并对其积分产生锯齿波。   一、方案选择与论证 1、方波、三角波发生器 方波发生器由电路由迟滞比较器和一个RC充放电回路组成,电压比较器是一种产生方波的最简单的电路之一。而三角波可以通过方波信号积分得到。          2、正弦波发生器        方案一:通过双三极管差分放大器完成正弦波发生器。差分放大器主要有工作点稳定,输入阻抗高,抗干扰能力较强等有点。特别是作为直流放大器时,可以有效的抑制零点漂移,因此可将频率很低的三角波变换成为正弦波。波形变换的原理时利用差分放大器传输特性的非线性。单由于三极管的个性差异,无法避免由于三极管的双指数特性的不同所导致的输出正弦波的失真,而且电路较为复杂。          方案二:通过运放积分器对前级输出三角波进行积分,输出正弦波。由于前级输出三角波是由比较器产生的方波积分而成,只要前级输出的三角波达到设计要求,其产生的正弦波便自然会达到设计要求,不过由于输入三角波的信号幅度已经有所降低,可能导致输出的正弦波幅值较小,故在后级增加同相比例放大器进行放大操作。 电原理图:          就两方案比较,后者由于设置简单,频率和失真都可以达到设计要求,安装简单。故选用了方案二。   3、脉冲波、锯齿波发生器 在考虑方波和三角波产生时,一般下降时间远小于上升时间,就可得到锯齿波。故在三角波发生器上端的电容前增加二极管控制上升和下降时间。   二、理论分析与参数计算 1、方波、三角波发生器   方波、三角波发生器由电压比较器和基本积分器组成,如图所示。 运算放大器A1与R1、R2、R3 及Rw1、Dz1、Dz2组成电压比较器;运算放大器A2与R4、Rw2、R5、C1 及C2组成反相积分器,比较器与 积分器首尾相连,形成闭环电路,构成能自动产生方波、三角波的发生器。 电路参数:  1.方波的幅度: Uo1m = Uz ——(1)…

  • 关于水晶报表分页统计的开发经验

    by

    in

    最近在修改学校的程序的发现个很大的问题,水晶报表运行总计字段的统计功能是针对整份报表的,而一般单页页脚的统计是针对当前页的。翻了半天business objects的文档,没有找到,后来google了半天,总算找到了解决方法。使用公式编辑器的自定义字段公式,主要使用whileprintingrecords;这个命令,这是当页面写入时调用此命令下的程序。     formula_1 whileprintingrecords; global numbervar BFtotal; global numbervar RStotal; global numbervar BTtotal; BFtotal:=0; RStotal:=0; BTtotal:=0;   formula_2 whileprintingrecords; global numbervar BFtotal; global numbervar RStotal; global numbervar BTtotal; BFtotal:=BFtotal+{VIEW1.保费}; RStotal:=RStotal+1; BTtotal:=BTtotal+{VIEW1.补贴};   本页保费 whileprintingrecords; global numbervar BFtotal; 本页补贴 whileprintingrecords; global numbervar BTtotal; 本页人数 whileprintingrecords; global numbervar RStotal; formula_1是页面的初始化,主要是清零操作,需要存放在页面的最初,页眉处。 formula_2是每次调用的计数,存放在计数体内部,这里我放在了详细资料内。 而最后的本页保费、本页补贴、本页人数存放在页脚的用作计数统计的显示使用。