关键词 ASIC Xinlinx Webpack4.2 ISE 七段译码器
一、 可编程ASIC(Application Specific Integrated Circuits)与EDA工具的简介
目前ASIC已经被广泛的应用于高性能的微处理器、数字信号处理器、单片处理器。ASIC直译为“专用集成电路”,它是面向专门用途的电路。它是根据用户的特定要求,厂家提供全定制和半定制的集成电路。而可编程逻辑器件是ASIC的一个重要的分支。用户只要对它用EDA工具编程,就能实现自己的设计。用户可以反复编程、反复修改,这样很方便、灵活的实现自己的设计。可编程逻辑器件是ASIC主要分为:复杂可编程逻辑器件CPLD(Complex Programmable Logic Device)和现场可编程门阵列FPGA(Field Programmable Gate Array)。CPLD在工艺上采用EPROM、FLASH EPROM和E2PROM技术。因而CPLD在掉电的情况下能够保持用户设计的信息。而FPGA主要采用COMOS SRAM 工艺制造。它和CPLD别在于,用户必须把设计好的代码存储在和FPGA相连的存储器中(一般为串行EPROM),系统在上电时FPGA读入代码并配置系统。掉电时FPGA内的信息消失。现在可编程ASIC 向着高密度、大规模、低电压、低功耗、内嵌微处理器内核方向发展。从而实现了集成复杂功能于片上系统SOC(System-on-Chip)能力。
现在较为流行的EDA工具为Altera的MaxplusII、QuartusII,Xilinx的Foundation、Xilinx ISE,Lattice的IspExpert等。Xilinx WebPack4.2 ISE(XWP4.2ISE)是Xilinx公司向用户提供的网络版免费软件。它支持Vhdl、Verilog HDL、ABEL 语言,EDIF (or XNF)网表,电路原理图输入。并包含ModleSim仿真软件,它能实现功能仿真、时序仿真。通过Impact 软件下载编程,它支持的通讯接口为:并行口、Mutilinx串行口、Mutilinx USB口。
XWP4.2ISE目前所支持的Xilinx的产品为:
XC9500 (5V CPLDs)
XC9500XL (3.3V CPLDs)
XC9500XV (2.5V CPLDs)
XCR3000XL (CoolRunner XPLA3 3.3V zero-standby CPLDs)
XC2C00 (CoolRunner-II 1.8V zero-standby CPLDs)
XC2S00 (Spartan-II FPGAs)
XC2S00E (Spartan-IIE FPGAs)
XCV00E (Virtex-E FPGAs up to XCV300E)
XC2V00 (Virtex-II FPGAs up to XC2V250)
XWP4.2ISE包含丰富的模版和宏,用户设计、调试非常方便。并提供下载电路的原理图、所以对于我们一些初学者和做简单设计的开发者,Xilinx公司的网络版软件为我们提供了良好的开发环境。
二、七段译码器的实例设计
在此用Xc2s100 FPGA器件,XWP4.2 ISE来设计七段译码显示。该设计采用 bottom upto top设计方法由三部分组成,其中包括顶层原理图模块dsp_7.sch、计数器模块counter.vhd、七段译码模块leddcd.vhd。
系统工作原理为4位计数器在clk的作用下开始计数,并输出给七段译码器显示如图(1)、(2)所示。为了使人能够看清楚LED显示,clk输入时钟频率要在每分钟几次左右。
设计流程为,首先创建一个工程design1,选择器件为span2 系列xc2s15-5cs144,选择xst vhdl 输入。然后加入新文件,选择vhdl moudle ,命名为leddcd,按照wizard 选择输入输出端口,添入代码,然后综合、编译。然后另建一个工程design2,模仿design1的步骤,区别是源文件是counter.vhd,综合、编译无误后,添加源文件的命令菜单,选择添加leddcd.vhd的copy。然后用鼠标分别点中两个文件,选择工程窗口底部的创建原理图符号。然后选择加入新的源文件dsp_7.sch,选择原理图输入。在这里使用ECS (Engineering Schematic Capture)工具,用户可以用库中的符号、或者用户自己创建的符号画出自己的原理图设计,ECS能够把原理图转换成HDL (Hardware Description Language),以便于后续综合、仿真。由于我们生成了两个原理图符号,在ECS中我们会发现这两个文件。选择添加符号,添加端口属性、连接导线然后检查错误。然后选择存盘。这时我们发现在工程导航主窗口dsp_7.sch变为顶层文件。最后综合、仿真、下载。
关于功能仿真、时序仿真、顶层原理图及vhdl 代码如下图所示。
现在cpld和fpga被广泛用于通信、数据采集接口领域,它不仅能够完成复杂的逻辑接口,也能够完成一些复杂算法的实现。电子工程师设计电路时更注重系统的简洁化设计、系统的灵活性设计,cpld和fpga正因为具有在系统编程、测试的功能,在一些接口设计上,它具有很好的优势。一些厂家在cpld和fpga上内嵌入32位处理器内核,并且支持C、C++支持。这使得我们更加容易、快速的实现我们的设计。本文仅起到抛砖引玉的作用,如果想提高水平,请多看一些设计的例子,以从中获得启发。当然具体的实践是最好的提高水平的方法。
附系统设计源代码,IEEE库略
--七段译码器]
entity leddcd is
Port ( d : in std_logic_vector(3 downto 0);
s : out std_logic_vector(7 downto 0));
end leddcd;
architecture Behavioral of leddcd is
begin
s<= 00111111when d=0000else --3fh
00000110when d=0001else --06h
01011011when d=0010else --5bh
01001111when d=0011else --4fh
01100110when d=0100else --66h
01101101when d=0101else --6dh
01111101when d=0110else --7dh
00000111when d=0111else --07h
01111111when d=1000else --7fh
01100111when d=1001else --67h
01110111when d=1010else --77h
01111100when d=1011else --7ch
00111001when d=1100else --39h
01011110when d=1101else --5eh
01111001when d=1110else --79h
01110001when d=1111else --71h
00111001 ; --3fh
end Behavioral;
--4位计数器
entity counter is
Port ( clk : in std_logic;
rst : in std_logic;
count : out std_logic_vector(3 downto 0));
end counter;
architecture Behavioral of counter is
signal cnt: std_logic_vector(3 downto 0);
begin
process(clk,rst)
begin ,
if rst=1 then
cnt<=0000;
elsif clkevent and clk=0 then
cnt<=cnt+1;
end if;
end process;
count<=cnt(3 downto 0);
end Behavioral;
参考文献
1 《xilinx ISE tutorial》手册, http://www。Xilinx。com
2 徐志军,徐光辉。cpld/fpga的开发与应用。电子工业出版社。2002.1
3 Sefan Sjoholm,Lennart Lindh 著,边计年,薛宏熙译。清华大学出版社。2000.8
作者简介:李泓汐,男,大连海事大学,自动化与电气工程学院,电力电子专业2000级硕士研究生。
蔡悦,女,大连理工大学,计算力学专业,博士,讲师。