时间:2023-05-30 08:53:01
开篇:写作不仅是一种记录,更是一种创造,它让我们能够捕捉那些稍纵即逝的灵感,将它们永久地定格在纸上。下面是小编精心整理的12篇vhdl语言,希望这些内容能成为您创作过程中的良师益友,陪伴您不断探索和进步。
关键词:vhdl;CPLDCPU
中图分类号:TP312 文献标识码:B文章编号:1009-9166(2008)33(c)-0049-01
CPU因其在各大系统中处于核心位置而在硬件电路设计中备受关注,但因其结构复杂,所涉专业背景多而不被一般人掌握。CPU设计极具代表性,虽发展日新月异,但就其基本原理而言大同小异。VHDL语言是符合IEEE标准的当今世界最为流行的硬件描述语言。下文通过对CPU结构模型的简化,依托综合实验平台,所描述的简易4位CPU,能实现加、减、乘、移位等操作。
一、系统功能设计。精简CPU结构模型,运用Altera公司的MAX7000s系列芯片,依托综合实验板,运用状态机实现了微机指令系统。其指令的分析和执行过程与微机中的CPU相似,能完成简单的算数运算和逻辑运算。
二、设计与实现。(一)、简易4位CPU的基本结构单元。1)程序计数器;2)输入与MAR(Memory Access Register);3)16×8RAM;4)指令寄存器;5)累加器(Accumulator);6)二进制显示(Binary Display);7)B寄存器(B Register);8)输出寄存器(Output Register);9)运算器(Calculater)
(二)、寻址方式介绍。本设计中的4位CPU指令共有8个且可分为两种类型,如下表:
对状态机的主要部分的描述和注释:IF(clk'event AND clk='0')THEN--时钟下降沿触发
IF(run='1')THEN--如果CPU运行信号为
CASE pstate IS
WHEN s0=>nstate
f1:=true;--标志f1置true
IF(breg="00000000")THEN--如果B寄存器值为0
mar
END IF;
WHEN s1=>nstate
IF(breg="00000000")THEN--如果B寄存器值为0
IF(flag=true)THEN --标志为true
pc
flag:=false;--标志flag置false
END IF;--如果不满足条件,是因为正执行多次移位的指令
END IF;--只有移位完才能执行下一条指令,所以程序计数器数值不变
(四)、简易4位CPU功能仿真(加法)。以下是计算10+15+17-20=1C(十六进制加减计算)的VHDL源程序,这部分将写入ROM中:ARCHITECTURE rtl OF ROM16x8_1 IS
BEGIN
dataout
"00011010" WHEN (address="0001" AND ce='0') ELSE
"00011011" WHEN (address="0010" AND ce='0') ELSE
"00101100" WHEN (address="0011" AND ce='0') ELSE
"11100000" WHEN (address="0100" AND ce='0') ELSE
"11110000" WHEN (address="0101" AND ce='0') ELSE
"00010000" WHEN (address="1001" AND ce='0') ELSE
"00010101" WHEN (address="1010" AND ce='0') ELSE
"00010111" WHEn (address="1011" AND ce='0') ELSE
"00100000" WHEN (address="1100" AND ce='0') ELSE
"00000000";
END ARCHITECTURE rtl;
10+15+17-20=1C(十六进制加减计算)仿真波形图如下:
总结:采用自顶向下的设计方法,将复杂的CPU有效划分位状态机模型再进行设计和编程,并用QuartusII软件进行了仿真,最终在MAX7000s综合电路板上验证通过,很好地模拟了CPU的工作过程。但此设计亦有不足之处:1.没有直接实现除法;2.算数没有优先级。另外,综合开发板上的MAX7000s系列性能过低也是制约设计复杂的数字电路障碍之一。
作者单位:北京邮电大学电信工程学院
作者简介:吉祥(1986年-),男,汉族,上海长宁区人,北京邮电大学 电信工程学院2005级电子信息工程本科生。
参考文献:
[1]张亦华,延明.数字电路EDA入门――VHDL程序实例集[M].北京.北京邮电大学出版社.2002
[2]姜立东.VHDL语言程序设计及应用[M].北京:北京邮电大学出版社.2004
关键词:教学改革 实践教学 VHDL语言
中图分类号:G642 文献标识码:A 文章编号:1674-098X(2015)09(a)-0117-02
VHDL语言[1-2](VHDL,VHSIC (Very High Speed Integrated Circuit)Hardware Description Language)是一种标准的数字系统硬件电路设计语言,于1983年由美国国防部(DOD) 为实现其高速集成电路计划发起创建的一种高速集成电路硬件描述语言,其目的是为了给数字电路的描述与模拟提供一个基本的标准。VHDL语言在1985年完成第一版,1987年成为IEEE标准(IEEE STD1076-1987),1993年增修为(IEEE STD1076-1993)标准。VHDL语言为高级硬件行为描述型语言,为所有可编程逻辑器件厂商(如Xilinx和Altera公司等)所支持,已成为电路设计人员和电子设计工程师必须掌握的工具语言。硬件逻辑设计技术[3]是电子信息类专业的重要专业课,该课程包括课堂理论教学和实验两个模块,其特点是软硬件结合,该课程的综合知识面宽及工程实践性强。电子信息类专业的学生掌握硬件逻辑设计能力无论是对学生完成毕业设计或工程创新,还是促进学生就业都有重要意义。因此,硬件逻辑设计的实践性教学在电子信息类专业实践教学中的地位日益显著,如何开设好VHDL语言及硬件逻辑设计是当前硬件设计语言课程中的一个非常重要的问题[4-6]。
1 教学目标
《VHDL语言及数字逻辑设计》课程属电子信息类专业技术类选修课,是将控制,仿真与芯片设计相结合的一门硬件设计语言。通过本课程的学习,使学生通过对VHDL语言及EDA技术的学习和实践训练,获得现代硬件数字逻辑设计的软件化设计方法,了解并初步掌握数字系统硬件电路设计领域的最新技术;通过有针对性、分层次、分阶段地实施实践教学,激发并调动学生创造性思维能力,强化学生的实践动手能力和创新能力,为学生在硬件逻辑设计领域的进一步深入探索和进行创新奠定工程基础,以及应用VHDL及EDA工具开发设计数字系统的基本方法及技术,为学生完成毕业设计及将来的工作等打下扎实的基础。
另外,本课程的教学难点是,一方面要把握学生的数字电路基础水平;另一方面要高度概括VHDL语言的专业课内容,深入浅出,还要照顾到彼此之间的联系,尤其是面向应用。因此,首先讲清楚确知学习VHDL语言的意义和FPGA的工作原理,并进一步讲清VHDL语言的基本结构和以及VHDL语言中主要描述语句的特点和用途,并设计一些基本逻辑电路实例,目的在于让学生熟悉VHDL语言的整个过程,能运用VHDL语言编程及进行仿真,并掌握其中的关键技术。这样便于学生进一步学习和理解VHDL语言的应用,增强学生在工作中的竞争能力,达到可以用VHDL语言设计数字逻辑电路和数字应用系统,并在CPLD/FPGA可编程逻辑器件上实现自己的设计。
2 教学内容
VHDL语言如今已经广泛被应用到FPGA/CPLD和ASIC中的设计。VHDL语言具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件逻辑设计任务,提高了硬件设计效率和可靠性。而且VHDL语言具有与具体硬件电路无关和与硬件设计平台无关的特性,并具有良好的电路行为描述的能力,在语言易读性和层次化结构化设计方面表现了强大生命力和应用潜力。因此,我们选择VHDL语言作为这门课的课堂教学内容。
《VHDL语言及硬件逻辑电路设计》课程内容的主要教学思路是,以VHDL硬件描述语言为硬件设计表达手段,以Xilinx公司的ISE软件为硬件设计开发工具,并以FPGA/CPLD可编程逻辑器件开发系统为教学实践平台,来实现学生对数字电路系统的开发设计,培养学生自顶而下的层次化设计思想,提高学生应用实践创新能力。
在教学内容上,删去了一些FPGA/CPLD可编程器件结构内容的过多讲解,重点讲解VHDL语言内容,并利用有限的课时补充了硬件逻辑电路设计方面的一些最新进展,以利于学生开阔视野和提高学习兴趣;针对VHDL语言语法丰富的特点,增加了大量课堂实例,并结合应用对VHDL语言中关键要点进行详细说明,便于学生理解和掌握VHDL课程内容;在开发软件方面以Xilinx公司的ISE软件作为平台,并针对硬件仿真,重点是让学生学会并熟练掌握用ISE软件进行数字系统仿真的基本过程和操作;在实践训练方面,精心设计了课堂练习/课后习题和配套实验,提高学生实践动手能力,从而达到良好的教学效果。
3 多层次式教学模式
《VHDL语言及硬件逻辑电路设计》课程是一门工程实践性很强的课程,我们提出以实践训练为主,边学边练的硬件逻辑设计教学模式,重点加大对学生实践能力、解决实际问题能力及团体合作精神等综合素质的培养,使“数字逻辑电路设计实践教学”在本科培养中发挥更重要的作用。在教学过程中,提出多层次的实践教学模式,通过大量的多层次实例教学让学生主动建构知识、增长技能、发展能力。
我们将《VHDL语言及硬件逻辑电路设计》课程的实践教学分为三个层次。
第一层次是课堂实验教学,这一阶段主要培养的是学生的主动学习能力,通过课堂实验练习使学生掌握和熟练使用开发工具,具备基本的硬件编程能力。课堂实验教学是针对教师在讲授理论内容后,对应设计相应知识内容的实验项目,并编写课堂实验指导书。在理论课部分内容方面,首先讲解VHDL语言的基本单元,如VHDL语言设计的基本单元、构成、子结构描述(元件说明,元件安装)等,在VHDL语言的数据类型方面,主要讲解VHDL语言的客体及分类、整数类型和数组类型,表达式与运算符;其次,介绍VHDL语言主要描述语句,如顺序描述语句和并发描述语句;最后介绍基本逻辑电路的设计,如组合逻辑电路的设计,时序电路的设计,存储器和有限状态机设计等。那么针对课程的理论内容,设计的实验主要有:(1)ISE工具的使用;(2)编码器和译码器等组合逻辑电路的设计;(3)有限状态机和计数器等时序电路的设计;(4)RAM和FIFO等存储器的设计。通过这些基础知识点的实验练习,能让学生较好的熟悉VHDL语言的基础知识和语句的基本应用,从而较好的掌握VHDL语言中的关键内容,加深了对VHDL语言知识点的感性认识和全面掌握,达到可以用VHDL语言设计数字逻辑电路和数字应用系统。在课堂上通过对算法实例的程序执行仿真模拟。
第二个层次是综合性设计实验,这一层次的实验要求学生已经掌握基本的VHDL语言知识并能综合地运用所学内容,主要培养学生动手实践能力、解决实际问题能力及团队合作能力。综合性设计实验以硬件开发板实验为主,主要包括跑马灯、VGA显示、波形发生器、通用异步收发器、SRAM接口设计等题目。在实验中,教师要求学生每4人为一组进行实践练习。在实验过程中,要求学生能上机编写代码并调试VHDL程序,每组学生对实验过程和实验结果进行分析和总结,并提交硬件实验报告。在实验课中,教师根据各个小组提交的实验报告,首先安排各小组进行实践动手经验交流,然后选择一些优秀小组中的代表上台做实验心得汇报,并现场进行问题分析和技术总结,加深了对VHDL语言中知识点的感性认识和全面掌握。通过这些活动,不但让学生熟悉了硬件设计的开发环境,提高了硬件设计编程技巧,而且还能激励学生主动学习VHDL语言的兴趣,提高学生的分析和解决实际问题的能力,并培养学生团体合作能力。
第三个层次是课程设计实验,这一阶段要求学生独立完成硬件工程课题的设计与实现,在强调学生独立设计实现的同时,更加注重学生综合能力的培养。课程设计题目采取开放式选题,可由教师提供背景明确和启发性强的题目,也可以由学生自主选择题目并提交相应的课程题目设计目标、任务和方法,经教师审核批准后作为课程设计题目。另外学生也可以根据个人兴趣选择不同类型的课程设计题目后,由学生自行拟定实验方案,查阅文献资料和编写VHDL程序,自主解决实验问题,并对对实验结果进行分析总结,撰写课程设计研究报告。通过这些课程设计实验设计,在培养学生自主学习及主动学习的同时,也锻炼学生的动手能力和表达能力。
4 结语
VHDL语言及数字逻辑设计课程是一门工程实践性很强的课程,通过有多层次地实施实践教学,充分发挥实践教学的优势,激发了学生的学习热情,强化学生的实践动手能力和创新能力,并培养学生独立思考、自主创新的学习习惯,取得了较好的教学效果。该实践教学体系遵循人才培养的客观规律,将多层次实验从简单到复杂、从基础实验练习到综合创新实验,贯穿于整个VHDL语言及数字逻辑设计课程学习过程,使学生在循序渐进的实践教学过程中成长。
参考文献
[1] 侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计[M].西安:西安电子科技大学出版社,2009.
[2] 谭会生,张昌凡,EDA技术及应用[M].西安:西安电子科技大学出版社,2011.
[3] 曾志廉,何清平,通用FPGA试验系统的设计与应用[J].计算机信息,2007(11):234-235.
[4] 叶波,赵倩.“集成电路系统设计”课程教学改革探讨[J].中国电力教育,2010(16):109-110.
关键词:交通灯;VHDL;有限状态机;仿真
中图分类号:TP391文献标识码:A文章编号:1009-3044(2009)27-7796-02
Design of Traffic Light Control System based on VHDL Finite State Machine
XU Da-zhao
(Jiangsu Vocational and Technical College of Finance & Economics, Huaian 223003, China)
Abstract: According to intersection traffic light control requirements, the paper puts forward a design of traffic light control system with VHDL and finite state machine. Under the MAX + PLUS II simulation, the results show that this design meets the design requirements, then carries on the test in the experiment box, confirmsthat this design method is practical and feasible.
Key words: traffic light; VHDL; finite state machine; simulation
随着电子技术的发展,特别是大规模集成电路的研制和发展,电子电路的设计变得越来越复杂,使用“语言”进行电子设计已成为一种趋势[1]。VHDL语言是电子设计的主流硬件描述语言,它更适合进行行为描述,这种方式使得设计者专注于电路功能的设计,而不必过多地考虑具体的硬件结构,从而很容易实现自顶向下的设计流程。在进行数字系统设计的时候,如果实现一个控制功能,通常会选择状态机,因为无论是与基于VHDL的其他设计方案相比,还是与可完成相似功能的CPU相比,在很多方面有限状态机都有难以超越的优越性。
1 系统功能要求分析
本系统要求一个由一条主干道和一条支道公路的汇合点形成的十字交叉路口的智能交通灯控制器,实现交通无人自动管理。要求是优先保证主干道的通畅,因此,平时处于“主干道绿灯,支道红灯”的状态,只有在支到有车辆要穿行主干道时,才将交通切换“主干道红灯,支道绿灯”的状态。此外,主干道和支道每次通行的时间不得低于30s,而在两个状态交换过程出现的“主黄,支红”和“主红,支黄”状态,持续时间都为4s。根据交通信号灯控制的要求,我们把它分解为定时器和控制器两个主要部分,其原理框图如图1所示。
图中MG、MY、MR分别表示主干道上的绿灯、黄灯、红灯,BG、BY、BR分别表示支道上的绿灯、黄灯、红灯,它们的值为“1”时表示灯亮,为“0”时表示灯灭;sb表示支道传感器是否检测车辆存在,sb为“1”时表示有车,为“0”时表示无车;定时器在控制器提供的计时信号en和清零信号clr的作用下完成定时功能,并向控制器提供30s、4s的计时信号;控制器是本系统的核心,它的作用是根据支道传感器和定时器的信号,判断、调整和控制整个系统的状态,并控制定时电路工作,提供适当的灯光控制信号。
2 交通灯控制器的程序设计
2.1 有限状态机的建立
有限状态机(Finite State Machine,简称FSM)是一类很重要的时序电路,是许多数字系统的核心部件[3],也是实时系统设计中的一种数学模型,是一种重要的、易于建立的、应用比较广泛的、以描述控制特性为主的建模方法,它可以应用于从系统分析到设计的所有阶段。有限状态机的优点在于简单易用,状态间的关系清晰直观。建立有限状态机主要有两种方法:“状态转移图”和“状态转移表”,在此使用状态转移图来描述控制器的工作过程。
根据主干道和支道的交通灯的变化情况,可以定义这样四种状态:S0为初始状态,主干道绿灯亮,支道红灯亮;S1为主干道黄灯亮,支道红灯亮;S2为主干道红灯亮,支道绿灯亮;S3为主干道红灯亮,支道黄灯亮[4]。这四种状态的转换关系如图2所示。在状态转换的过程中,有这样一个规律:当进行状态转换时,定时器必须清零,此时clr为0,en为0;保持状态时,定时器一直进行定时,此时clr为1,en为1。
2.2 有限状态机的描述方式
VHDL没有对状态机的描述规定一般的格式,但是为了使综合工具从VHDL描述识别并综合出状态机,需要遵循一定的编码风格,基本的FSM的编码风格是用CASE语句或其他等价方法来描述。一个有限状态机总是可以被分成次态译码、状态寄存器、输出译码三个模块。因此,有限状态机描述方式有如下三种:三进程描述、双进程描述和单进程描述,但是用VHDL描述状态机一般采用进程(process)描述:一个是时钟进程,控制状态机在时钟有效沿根据条件得到下一状态并进行状态迁移;另一个进程是组合进程,不受时钟控制,由输出相关的信号)触发,该进程根据触发信号决定状态机的输出信号值[5]。
2.3 交通灯控制器的VHDL程序[6]
根据交通信号灯控制器的状态转移图和有限状态机的描述方式,在此采用双进程描述方式,写出交通灯控制器的VHDL程序如下:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY jtd IS
PORT
(clk,sb,reset: IN STD_LOGIC;
MR,MY,MG,BR,BY,BG: OUTSTD_LOGIC);
END jtd;
ARCHITECTURE art OF jtdIS
type state_type is (S0,S1,S2,S3);
SIGNAL state : state_type;
BEGIN
change_state:PROCESS (CLK) --CLK为敏感信号量
VARIABLEs: integer range0to 255;--s为秒定时器
VARIABLEclr,en :bit;--clr,en为秒定时器使能信号
BEGIN
IF reset = '1' THENstate
ELSIF (clk'event and clk='1') THEN
IFclr='0' THENs:=0;-- clr为0,定时器清零
ELSIF en='0'THENs:=s;-- en为0,定时器保持不变
ELSEs:=s+1;--clr为1,en为1时,正常计时
ENDIF;
CASE state IS
WHEN S0=> IF S
--主干道绿灯持续时间未到30s,维持S0状态
ELSIF (S>=30 AND sb='0')THEN state
--已过30s但支道无车,维持S0状态
ELSIF (S>=30 AND sb='1') THEN state
--已过30s且支道有车,转换到S1状态
END IF;
WHEN S1=> IF S=4 THENstate
ELSEstate
END IF;
WHEN S2 => IF S
--支道绿灯持续时间未到30s,维持S2状态
ELSIF (S>=30 AND sb='1') THEN state
--已过30s但支道有车,维持S2状态
ELSif (S>=30 AND sb='0') thenstate
--已到30s且支道无车,转换到S3状态
END IF;
WHEN S3 => IF S=4 THENstate
ELSEstate
END IF;
END CASE;
END IF;
END PROCESS change_state;
output_process:PROCESS (state)
BEGIN
CASE state IS
WHEN S0 =>MR
--主干道绿灯亮,支道红灯亮
WHEN S1 =>MR
--主干道黄灯亮,支道红灯亮
WHEN S2 =>MR
WHEN S3 =>MR
-- 主干道红灯亮,支道黄灯亮
END CASE;
END PROCESS output_process;
END art;
3 系统仿真
在MAX+PLUS II环境下进行了仿真[7-8],其时序仿真图如图3所示。
4 结束语
仿真结果表明,本设计按要求实现了交通灯的控制。把程序下载到实验箱的FPGA芯片(EP1K30QC208-3)上,进行硬件测试,发现电路工作正常,控制结果完全符合要求。
参考文献:
[1] 史小波,程梦璋,许会芳.集成电路设计VHDL教程[M]. 北京清华大学出版社,2005:12-15.
[2] 文畅.基于FPGA/CPLD和VHDL语言的交通灯控制系统设计[J].电脑知识与技术,2007,(3).
[3] 谭会生,张昌凡.EDA技术及应用[M]西安:西安电子科技大学出版社,2004:198-199.
[4] 田瑞利,陈海滨.基于VHDL有限状态机的交通信号灯控制系统设计[J].广州航海高等专科学校学报,2008,15(3)31-33.
[5] 潘松, 黄继业. EDA技术实用教程[M].北京:科学出版社, 2002:170-174.
[6] 徐春娇. 基于VHDL 状态机设计的智能交通控制灯[J].国外电子元器件,2007(2):31-35。
关键词:EDA;VHDL;电子技术;虚拟实验;仿真
中图分类号:G642 文献标识码:B
文章编号:1672-5913(2007)14-0087-03
1引言
电子技术是计算机及电类专业的一门具有极强实践性的基础课,其教学过程是从理论知识的认知到实践知识的认知、最后到实践能力的认知过程,实验环节是整个教学过程的关键,对教学质量起着十分重要的作用。传统的实践教学方式,由于实验仪器的局限性、设备的相对陈旧实验效率较低,而且不具备电子设计技术及仿真功能,已经不适应现代教育的发展,更不适应远程开放教育的现代化。为此将EDA技术应用于电子技术教学,克服传统教学的不足,将传统经典理论与新知识、新技术很好地融会贯通,提出基于EDA平台的虚拟电子实验的新模式,是适应现代教育发展的必然趋势。
2EDA技术的研究
EDA是Electronics Design Automation(即电子设计自动化)的缩写。是指以计算机为工作平台,融合了电子技术、计算机技术、智能化技术最新成果的现代电子设计技术。它是由CAD发展起来的,是计算机信息技术、计算机图形学、微电子技术、电路理论以及信号分析与信号处理等理论和技术的结晶。
EDA技术的基本特征:
(1) 自动进行产品全面设计。EDA技术根据设计输入文件(HDL或电路原理图)自动地进行逻辑编译、化简、综合、仿真、优化、布局、布线、适配以及下载编程以生成目标系统,即将电子产品从电路功能仿真、性能分析、优化设计到结果测试的全过程在计算机上自动处理完成。
(2) 硬件电路的软件设计方式。整个设计过程在下载配置前几乎不涉及任何硬件,其硬件设计也是通过软件测试实现的,如同修改程序一样快捷方便。
(3) 集成化程度更高,可构建片上系统,且体积小,功耗低,可靠性高。随着大规模集成芯片的发展,已能进行更加复杂电路的芯片优化设计和专用集成电路ASIC设计。
(4) 系统可现场编程,在线升级。
(5) 设计的移植性好,适合分工设计而且开发周期短,设计成本低,灵活性高。
EDA的工具种类繁多、特点各异,我们选择了最具代表性的适合教学的仿真软件,它是Altera 公司提供的Max+PlusⅡ平台,具有完全集成化、易学易用的可编程逻辑设计环境,主要用于设计新器件和中大规模CPLD/FPGA。它支持硬件描述语言、电路原理图、时序图等多种输入方式,利用其所提供的标准门电路、芯片等逻辑器件,完成数字电路从设计输入、编辑、编译、仿真、封装到下载的全过程。MAX+PlusII平台可以保证所设计系统的可靠性、高效性和灵活性,其强大的图形界面和完整的帮助文档,使学生能够轻松快速地掌握和使用该EDA平台,进行逻辑电路及相关系统的设计,从而达到虚拟化电子技术实践的目的。
3VHDL语言
EDA技术需要对系统的行为、功能进行正确的描述,硬件描述语言HDL(Hardware Description Language)是各种描述方法中最能体现EDA优越性的描述方法。其描述的对象就是待设计电路的逻辑功能、实现该功能的算法、选用的电路结构以及其他各种约束条件等。
VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)超高速集成电路硬件描述语言是美国国防部在1982年作为超高速集成电路开发计划的一部分,并于 1987年经IEEE批准为1076工业标准。VHDL作为IEEE的工业标准硬件描述语言,得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言,VHDL是最具推广前景的HDL。
VHDL具有极强的描述能力,能支持系统行为级、寄存器传输级和门级三个不同层次的设计,在Top_Down设计的全过程中可方便地使用同一种语言。VHDL设计并不十分关心一个具体逻辑是靠何种方式实现的,设计人员不需通过门级原理图描述电路,而是针对目标进行功能描述,把开发者的精力集中到逻辑所实现的功能上,将设计人员的工作重心提高到了系统功能的实现与调试上,只需花较少的精力用于物理实现。由于摆脱了电路细节的束缚,使得设计工作省时省力,加快了设计周期。
VHDL具有如下优点:
(1) VHDL是一门标准化语言,它是一种通用优化设计程序语言,已被电子设计界公认为标准的设计语言,适用于目前流行的各种EDA设计工具。
(2) VHDL是一门设计输入语言,它可将复杂的硬件电路运行过程以源程序的形式输入到数字电路设计系统中,进行系统仿真、自动综合。
(3) VHDL是一门网表语言,它的语言结构使它可在计算机的设计环境中,是不同设计工具间相互通讯的一种低级格式,即生成的门级网表文件,可相互替换、兼容。
(4) VHDL是一门测试语言,VHDL在进行数字电路设计描述的同时,建立测试基准,对所设计的数字电路进行功能模拟和仿真,以验证所设计电路是否满足功能与时序需求。
(5) VHDL是一门可读性语言,既可被计算机接受,也易被人所理解,它具有良好的可读性,易于修改和发现错误。用VHDL编写的源程序既是设计文件,又是技术文档。
经过对EDA技术和VHDL语言的分析探讨,确立了基于EDA平台的虚拟电子实验课程的可行性,这种新的教学模式,能使学生在计算机上完成实验的全部仿真过程,能解决集成电路环境、虚拟设备、虚拟器件等传统实验方法中无法克服的实验条件问题,可以完成各种不同水平的实验及课程设计,大大地提高实验教学效率。应用EDA技术的教学活动与现代教育理念接轨,学生可掌握现代电子设计的思维和方法。
4基于EDA平台的虚拟电子实验仿真示例
中规模集成电路在数字电路课程中是一个很重要的知识点,是过渡到大规模集成电路的重要桥梁,所以教学中要安排中规模译码器、数据选择器、计数器等多个实验。根据中规模电路结构复杂的特点,学生在原理图和文本输入形式中,选择基于Max+PlusⅡ平台的VHDL语言输入法进行实验设计和仿真。以下是验证60进制计数器逻辑功能的虚拟电子实验仿真示例。
(1) 源程序:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity cdu60is --实体
port (clk1,clr,ss :in std_logic;
--端口描述
co : out std_logic;
m :out std_logic_vector (7 downto 0));
end cdu60 ;
architecture aa of cdu60 is--结构体
signal out1,out2 :integer range 0 to 9;
【关键词】VHDL;通用;分频器;同步
Designt of even-divider with synchronous terminal which pulse width modulation in VHDL
Wang Liqiu1
(ChangChun Institute of Optics,Fine Mechanics and Physics,Chinese Academy of Science,ChangChun 130033)
Abstract:In order to realize by Top-down method as time system design of synchronous pulse signal digital logic circuits,circuit design using VHDL language design a universal divider.By setting the universal divider of the generic generic description of the parameters M1 and N1,CLR input synchronous signal,you can output different pulse width and signal leading edge and CLR signal forward fully synchronous synchronous pulse signal.The simulation results show that the result is correct,the engineering practice the synchronous error in the measurement of
Keywords:photo-electronic measure;time system;FPGA;VHDL
1.引言
时统统一终端[1]除了为测控设备[2]提供基于UTC标准或GPS标准的绝对时间信息外,还要对外提供各种在时间起点上与输入标准秒信号完全同步的同步脉冲信号。随着可编程逻辑器件工艺和开发工具的快速发展,可编程逻辑器件(FPGA)已经逐渐成为数字电路的主流电子元件,利用EDA工具实现硬件数字逻辑电路,使得硬件电路可以在不更改PCB的基础上进行修改和升级,因此成为目前硬件电路的首选。标准化硬件描述语言VHDL由于符合EDA电路自动化设计的要求,使得传统人工设计方法逐渐被取代,目前已成为EDA工具和集成电路厂商的普遍首先。
为了FPGA芯片[3]中实现各路脉宽和频率不同的独立同步信号输出的目的,利用VHDL语言的优点,设计一个通用的带有同步端口且参数可调的分频器,通过调用和设置不同的分频器模块,按Top-down设计方法实现主电路的设计。
2.带同步端可变脉宽通用偶数分频器
分频器[5]是对较高频率的时钟信号进行分频操作,从而得到较低频率的信号。带同步端可变脉宽通用偶数分频器,要求具有脉宽和频率可调,并且输出信号与输入同步信号clr同步的功能。
设计一个有三个输入信号和一个输出信号的通用分频器,clkin为输入的时钟信号,分频器对此信号进行分频,clr为输入同步信号,最为内部计数器的清零端,实现输出与输入信号同步,reset为复位信号。
3.VHDL语言设计
上述通用分频器的VHDL[4]语言实现如下:
library ieee;
use ieee.std_logic_1164.all;
entity fenpin_e_clr_h is
generic (
n1:integer:=2; --n1为分频倍数;
m1:integer:=1;--m1为脉宽计数;
);
port(
clkin:in std_logic; --时钟信号(5Mhz)
reset:in std_logic; --复位信号
clkout:out std_logic; --输出信号
clr :in std_logic --清零信号
);
end fenpin_e_clr_h;
architecture rtl of fenpin_e_clr_h is
signal temp:integer range n1-1 downto 0;
signal s,clear:std_logic;设两级锁存器
begin
process(clr,clear) ;
begin
if clear='1'then
s
elsif rising_edge(clr)then
s
end if;
end process;
process(clkin)—temp对时钟clkin计数并在clr信号到来时同步清零实现同步。
begin
if(s='1')then
temp
clear
else
clear
if(clkin'event and clkin='1') then
if temp=n1-1 then
temp
else
temp
end if;
end if;
end if;
end process;
process(temp,reset)
begin
if reset='1'then
--输出信号脉宽
If temp
clkout
else
clkout
end if;
else clkout
end if;
end process;
先描述一个分频计数器电路,通过计数器对时钟进行计数,然后通过计数值来控制输出时钟高低电平的时间;用电路的并行输出信号来控制输出时钟的高低电平;输入同步信号clr做计数器的清零信号,利用时钟和clr信号对输出信号经过两次锁存器[6](s,clear)控制采样,完成数据输出的同步化,并可有效防止亚稳态。
上述电路中,参数n1用于调节分频倍数,m1用于控制输出脉宽,设置n1,m1为generic类属说明,通过从外部对类属参量的重新设定,改变元件内部结构和功能。n1/m1=占空比,选频标为5Mhz,则t=1/f=200ns,则输出信号的脉宽为Pulse=200ns*m1。
4.实际应用电路
采用5Mhz时钟晶振,输入同步信号clr为1hz时,利用通用模块设计一个输出脉宽为5us的100hz窄脉冲和50hz方波的电路如图1所示。
采用f=5Mhz=5*106hz时钟晶振,Inst1对其进行n1=100000分频,对时钟clk信号进行m1=50000次计数,得到50hz的与clr同步的方波输出信号,即占空比为m1/n1=1/2。Inst2对时钟clk进行n1=500000次分频,对时钟m1=25次计数,得到脉宽为25/(5*106)S=5uS,频率为100hz的同步输出信号。
5.仿真结果
采用Quartus II[7]仿真,结果如图2所示。
从波形图可以看出,输出50hz信号为方波信号,输出100hz信号为窄脉冲信号,两个信号的信号前沿在清零信号clk到来时刻与clr信号同步。
6.结论
设计通用的输入端口参数可调的VHDL语言模块,在进行数字电路顶层设计时,只需要简单的参数设置就可以完成同步分频模块阵列的设计和直流码编码输出,使得顶层设计简单。该电路在工程实践中的测量结果为同步精度
参考文献
[1]本社编.时间统一技术[M].国防国内工业出版社,2004,9.
[2]何照才等.导弹航天测量控制系统光电测量[M].国防工业出版社,2002,10.
[3]刘延飞等.基于Altera FPGA/CPLD的电子系统设计及工程实践[M].人民邮电出版社,2009,9.
[4]王金明等.数字系统设计与VHDL[M].电子工业出版社,2010,.5.
[5]李仁发等.数字逻辑设计(第四版)[M].人民邮电出版社,2006.
关键词:ASIC 硬件描述语言HDL Verilog HDL VHDL SystemC Superlog 芯片系统SoC
引 言
硬件描述语言HDL是一种用形式化方法描述数字电路和系统的语言。利用这种语言,数字电路系统的设计可以从上层到下层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。然后,利用电子设计自动化(EDA)工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。接下去,再用专用集成电路ASIC或现场可编程门阵列FPGA自动布局布线工具,把网表转换为要实现的具体电路布线结构。
目前,这种高层次(high-level-design)的方法已被广泛采用。据统计,目前在美国硅谷约有90%以上的ASIC和FPGA采用硬件描述语言进行设计。
硬件描述语言HDL的发展至今已有20多年的历史,并成功地应用于设计的各个阶段:建模、仿真、验证和综合等。到20世纪80年代,已出现了上百种硬件描述语言,对设计自动化曾起到了极大的促进和推动作用。但是,这些语言一般各自面向特定的设计领域和层次,而且众多的语言使用户无所适从。因此,急需一种面向设计的多领域、多层次并得到普遍认同的标准硬件描述语言。20世纪80年代后期,VHDL和Verilog HDL语言适应了这种趋势的要求,先后成为IEEE标准。
现在,随着系统级FPGA以及系统芯片的出现,软硬件协调设计和系统设计变得越来越重要。传统意义上的硬件设计越来越倾向于与系统设计和软件设计结合。硬件描述语言为适应新的情况,迅速发展,出现了很多新的硬件描述语言,像Superlog、SystemC、Cynlib C++等等。究竟选择哪种语言进行设计,整个业界正在进行激烈的讨论。因此,完全有必要在这方面作一些比较研究,为EDA设计做一些有意义的工作,也为发展我们未来的芯片设计技术打好基础。
1 目前HDL发展状况
目前,硬件描述语言可谓是百花齐放,有VHDL、Superlog、Verilog、SystemC、Cynlib C++、C Level等等。虽然各种语言各有所长,但业界对到底使用哪一种语言进行设计,却莫衷一是,难有定论。
而比较一致的意见是,HDL和C/C++语言在设计流程中实现级和系统级都具有各自的用武之地。问题出现在系统级和实现级相连接的地方:什么时候将使用中的一种语言停下来,而开始使用另外一种语言?或者干脆就直接使用一种语言?现在看来得出结论仍为时过早。
在2001年举行的国际HDL会议上,与会者就使用何种设计语言展开了生动、激烈的辩论。最后,与会者投票表决:如果要启动一个芯片设计项目,他们愿意选择哪种方案?结果,仅有2票或3票赞成使用SystemC、Cynlib和C Level设计;而Superlog和Verilog各自获得了约20票。至于以后会是什么情况,连会议主持人John Cooley也明确表示:“5年后,谁也不知道这个星球会发生什么事情。”
各方人士各持己见:为Verilog辩护者认为,开发一种新的设计语言是一种浪费;为SystemC辩护者认为,系统级芯片SoC快速增长的复杂性需要新的设计方法;C语言的赞扬者认为,Verilog是硬件设计的汇编语言,而编程的标准很快就会是高级语言,Cynlib C++是最佳的选择,它速度快、代码精简;Superlog的捍卫者认为,Superlog是Verilog的扩展,可以在整个设计流程中仅提供一种语言和一个仿真器,与现有的方法兼容,是一种进化,而不是一场革命。
当然,以上所有的讨论都没有提及模拟设计。如果想设计带有模拟电路的芯片,硬件描述语言必须有模拟扩展部分,像Verilog HDL-A,既要求能够描述门级开关级,又要求具有描述物理特性的能力。
2 几种代表性的HDL语言
2.1 VHDL
早在1980年,因为美国军事工业需要描述电子系统的方法,美国国防部开始进行VHDL的开发。1987年,由IEEE(Institute of Electrical and Electro- nics Engineers)将VHDL制定为标准。参考手册为IEEE VHDL语言参考手册标准草案1076/B版,于1987年批准,称为IEEE 1076-1987。应当注意,起初VHDL只是作为系统规范的一个标准,而不是为设计而制定的。第二个版本是在1993年制定的,称为VHDL-93,增加了一些新的命令和属性。
虽然有“VHDL是一个4亿美元的错误”这样的说法,但VHDL毕竟是1995年以前唯一制订为标准的硬件描述语言,这是它不争的事实和优势;但同时它确实比较麻烦,而且其综合库至今也没有标准化,不具有晶体管开关级的描述能力和模拟设计的描述能力。目前的看法是,对于特大型的系统级数字电路设计,VHDL是较为合适的。
实质上,在底层的VHDL设计环境是由Verilog HDL描述的器件库支持的,因此,它们之间的互操作性十分重要。目前,Verilog和VDHL的两个国际组织OVI、VI正在筹划这一工作,准备成立专门的工作组来协调VHDL和Verilog HDL语言的互操作性。OVI也支持不需要翻译,由VHDL到Verilog的自由表达。
2.2 Verilog HDL
Verilog HDL是在1983年,由GDA(GateWay Design Automation)公司的Phil Moorby首创的。Phil Moorby后来成为Verilog-XL的主要设计者和Cadence公司的第一合伙人。在1984~1985年,Phil Moorby设计出了第一个名为Verilog-XL的仿真器;1986年,他对Verilog HDL的发展又作出了另一个巨大的贡献:提出了用于快速门级仿真的XL算法。
随着Verilog-XL算法的成功,Verilog HDL语言得到迅速发展。1989年,Cadence公司收购了GDA公司,Verilog HDL语言成为Cadence公司的私有财产。1990年,Cadence公司决定公开Verilog HDL语言,于是成立了OVI(Open Verilog International)组织,负责促进Verilog HDL语言的发展。基于Verilog HDL的优越性,IEEE于1995年制定了Verilog HDL的IEEE标准,即Verilog HDL 1364-1995;2001年了Verilog HDL 1364-2001标准。在这个标准中,加入了Verilog HDL-A标准,使Verilog有了模拟设计描述的能力。
2.3 Superlog
开发一种新的硬件设计语言,总是有些冒险,而且未必能够利用原来对硬件开发的经验。能不能在原有硬件描述语言的基础上,结合高级语言C、C++甚至Java等语言的特点,进行扩展,达到一种新的系统级设计语言标准呢?
Superlog就是在这样的背景下研制开发的系统级硬件描述语言。Verilog语言的首创者Phil Moorby和Peter Flake等硬件描述语言专家,在一家叫Co-Design Automation的EDA公司进行合作,开始对Verilog进行扩展研究。1999年,Co-Design公司了SUPERLOGTM系统设计语言,同时了两个开发工具:SYSTEMSIMTM和SYSTEMEXTM。一个用于系统级开发,一个用于高级验证。2001年,Co-Design公司向电子产业标准化组织Accellera了SUPERLOG扩展综合子集ESS,这样它就可以在今天Verilog语言的RTL级综合子集的基础上,提供更多级别的硬件综合抽象级,为各种系统级的EDA软件工具所利用。
至今为止,已超过15家芯片设计公司用Superlog来进行芯片设计和硬件开发。Superlog是一种具有良好前景的系统级硬件描述语言。但是不久前,由于整个IT产业的滑坡,EDA公司进行大的整合,Co-Design公司被Synopsys公司兼并,形势又变得扑朔迷离。
2.4 SystemC
随着半导体技术的迅猛发展,SoC已经成为当今集成电路设计的发展方向。在系统芯片的各个设计中,像系统定义、软硬件划分、设计实现等,集成电路设计界一直在考虑如何满足SoC的设计要求,一直在寻找一种能同时实现较高层次的软件和硬件描述的系统级设计语言。
SystemC正是在这种情况下,由Synopsys公司和CoWare公司积极响应目前各方对系统级设计语言的需求而合作开发的。1999年9月27日,40多家世界著名的EDA公司、IP公司、半导体公司和嵌入式软件公司宣布成立“开放式SystemC联盟”。著名公司Cadence也于2001年加入了SystemC联盟。SystemC从1999年9月联盟建立初期的0.9版本开始更新,从1.0版到1.1版,一直到2001年10月推出了最新的2.0版。
3 各种HDL语言的体系结构和设计方法
3.1 SystemC
所有的SystemC都是基于C++的;图1中的上层构架都是很明确地建立在下层的基础上;SystemC内核提供一个用于系统体系结构、并行、通信和同步时钟描述的模块;完全支持内核描绘以外的数据类型、用户定义数据类型;通常的通信方式,如信号、FIFO,都可以在内核的基础上建立,经常使用的计算模块也可以在内核基础上建立;如果需要,图1中较低层的内容不依赖上层就可以直接使用。
实际使用中,SystemC由一组描述类库和一个包含仿真核的库组成。在用户的描述程序中,必须包括相应的类库,可以通过通常的ANSI C++编译器编译该程序。SystemC提供了软件、硬件和系统模块。用户可以在不同的层次上自由选择,建立自己的系统模型,进行仿真、优化、验证、综合等等。
3.2 Superlog
Superlog集合了Verilog的简洁、C语言的强大、功能验证和系统级结构设计等特征,是一种高速的硬件描述语言。其体系结构如图2。
① Verilog 95和Verilog 2K。Superlog是Verilog HDL的超集,支持最新的Verilog 2K的硬件模型。
② C和C++语言。Superlog提供C语言的结构、类型、指针,同时具有C++面对对象的特性。
③ Superlog扩展综合子集ESS。ESS提供一种新的硬件描述的综合抽象级。
④ 强大的验证功能。自动测试基准,如随机数据产生、功能覆盖、各种专有检查等。
Superlog的系统级硬件开发工具主要有Co- Design Automation公司的SYSTEMSIMTM和SYSTEMEXTM,同时可以结合其它的EDA工具进行开发。
3.3 Verilog和VHDL
这两种语言是传统硬件描述语言,有很多的书籍和资料可以查阅参考,这里不多介绍。
4 目前可取可行的策略和方式
按传统方法,我们将硬件抽象级的模型类型分为以下五种:
系统级(system)——用语言提供的高级结构实现算法运行的模型;
算法级(algorithm)——用语言提供的高级结构实现算法运行的模型;
RTL级(Register Transfer Level)——描述数据在寄存器之间流动和如何处理、控制这些数据流动的模型。(以上三种都属于行为描述,只有RTL级才与逻辑电路有明确的对应关系。)
门级(gate-level)——描述逻辑门以及逻辑门之间的连接模型。(与逻辑电路有确切的连接关系。以上四种,数字系统设计工程师必须掌握。)
开关级(switch-level)——描述器件中三极管和存储节点以及它们之间连接的模型。(与具体的物理电路有对应关系,工艺库元件和宏部件设计人员必须掌握。)
根据目前芯片设计的发展趋势,验证级和综合抽象级也有可能成为一种标准级别。因为它们适合于IP核复用和系统级仿真综合优化的需要,而软件(嵌入式、固件式)也越来越成为一个和系统密切相关的抽象级别。
目前,对于一个系统芯片设计项目,可以采用的方案包括以下几种:
① 最传统的办法是,在系统级采用VHDL,在软件级采用C语言,在实现级采用Verilog。目前,VHDL与Verilog的互操作性已经逐步走向标准化,但软件与硬件的协调设计还是一个很具挑战性的工作,因为软件越来越成为SOC设计的关键。该方案的特点是:风险小,集成难度大,与原有方法完全兼容,有现成的开发工具;但工具集成由开发者自行负责完成。
② 系统级及软件级采用Superlog,硬件级和实现级均采用Verilog HDL描述,这样和原有的硬件设计可以兼容。只要重新采购两个Superlog开发工具SYSTEMSIMTM和SYSTEMEXTM即可。该方案特点是风险较小,易于集成,与原硬件设计兼容性好,有集成开发环境。
③ 系统级和软件级采用SystemC,硬件级采用SystemC与常规的Verilog HDL互相转换,与原来的软件编译环境完全兼容。开发者只需要一组描述类库和一个包含仿真核的库,就可以在通常的ANSI C++编译器环境下开发;但硬件描述与原有方法完全不兼容。该方案特点是风险较大,与原软件开发兼容性好,硬件开发有风险。
5 未来发展和技术方向
微电子设计工业的设计线宽已经从0.25μm向 0.18μm变迁,而且正在向0.13μm和90nm的目标努力迈进。到0.13μm这个目标后,90%的信号延迟将由线路互连所产生。为了设计工作频率近2GHz的高性能电路,就必须解决感应、电迁移和衬底噪声问题(同时还有设计复杂度问题)。
未来几年的设计中所面临的挑战有哪些?标准组织怎样去面对?当设计线宽降到0.13μm,甚至更小时,将会出现四个主要的趋势:
设计再利用;
设计验证(包括硬件和软件);
互连问题将决定对时间、电源及噪声要求;
系统级芯片设计要求。
满足未来设计者需要的设计环境将是多家供应商提供解决方案的模式,因为涉及的问题面太广且太复杂,没有哪个公司或实体可以独立解决。实际上,人们完全有理由认为,对下一代设计问题解决方案的贡献,基础研究活动与独立产业的作用将同等重要。
以后,EDA界将在以下三个方面开展工作。
① 互用性标准。所有解决方案的基础,是设计工具开发过程的组件——互用性标准。我们知道,EDA工业采用的是工业上所需要的标准,而不管标准是谁制定的。但是,当今市场的迅速发展正在将优势转向那些提供标准时能做到快速适应和技术领先的组织。处于领先的公司正在有目的地向这方面投资,那些没有参加开发这些标准的公司则必须独自承担风险。
② 扩展其高级库格式(ALF)标准,使其包含物理领域的信息,是EDA开发商可以致力于解决互连问题的算法,从而使电路设计者在解决设计收尾工作时,不再受到这个问题的困扰。
③ 制定新的系统级设计语言标准。标准化系统芯片的设计工具和语言,使SoC真正达到第三次微电子设计革命浪潮。
6 国内发展的战略选择
由于目前IT行业不景气,以及ASIC设计复杂程度不断增加,各EDA公司出现了合并调整的趋势。Synopsys合了Avant!和Co-Design,Cadence合了GDA等,形成了几大巨头的局面。而各可编程器件厂商,像Xilinx和Altera,也积极与EDA紧密合作,因此,我们必须抓住这个时机,全力发展;不然,就要面对以后与垄断巨头进行竞争的事倍功半的不利局面。
针对目前硬件描述语言的发展和国家芯片制造生产的发展战略,国内如何在原EDA基础薄弱的情况下迅速发展,使EDA成为一个合理、健康而必不可少的产业;将基础研究活动与独立产业的作用合理的结合,建议开展如下方面的工作:
① 为了实现我国的芯片设计自主化,必须夯实基础,在结合VHDL的基础上,推广Verilog HDL设计语言,使硬件设计的底层单元库可以自主研制;
② 根据目前芯片系统的发展趋势,对系统级语言进行比较研究,在Suoerlog、SystemC等语言中做出选择,并进行相关工具的推广,以及与相关企业进行合作等;
③ 深入HDL语言的综合和仿真等模型的研究,努力在与国外合作的基础上,建立自主知识产权的EDA公司;
④ 积极加入EDA目前正在进行的标准化工作,做到了解、学习、应用、吸收、参与并重;
关键词:FIR 滤波器;Simulink;DSP Builder;Quartus Ⅱ
中图分类号:TN713文献标识码:A
文章编号:1004-373X(2009)20-193-03
Design of 16-taps FIR Filter Based on DSP Builder
FAN Hanbai,SI Jiazhen
(North China Electric Power University,Baoding,071003,China)
Abstract:Field Programmable Gate Array(FPGA)devices is widely used in the field of digital signal processing,it is difficult to design using VHDL or VerilogHDL.A model development technology of DSP Builder is adopted to design FIR filter,according to the flow of Matlab/Simulink/DSP Builder/Modelsim /Quartus Ⅱ,a 16-taps low-pass FIR filter is designed,which is simulated and verified in the digital signal process circuit,the results show that the method is simple,feasible and the advantage of designing digital filter by the use of DSP builder are verified.
Keywords:FIR filter;Simulink;DSP Builder;Quartus Ⅱ
FIR数字滤波器在数字信号处理的各种应用中发挥着十分重要的作用,它能够提供理想的线性相位响应,在整个频带上获得常数群时延,从而得到零失真输出信号,同时它可以采用十分简单的算法予以实现。这些优点使FIR滤波器成为设计工程师的首选。在采用VHDL或VerilogHDL等硬件描述语言设计数字滤波器时,由于程序的编写往往不能达到良好优化而使滤波器性能表现一般,而采用调试好的IP Core需要向Altera公司购买。在此,采用一种基于DSP Builder的FPGA设计方法,使FIR滤波器设计较为简单易行,并能满足设计要求[1]。
1 FIR滤波器介绍
1.1 FIR滤波器原理[2,3]
对于一个FIR滤波器系统,它的冲激响应总是有限长的,最具体的FIR滤波器可用下式表示[4]:
y(n)=∑Mr=1b(r)x(n-r)
式中:r是FIR滤波器的抽头数;x(n-r)是延时r个抽头的输入信号;b(r)是第r级抽头数(单位脉冲响应);M是滤波器的阶数;y(n)表示滤波器的输出序列。
滤波器就是寻求一个可实现的系统函数H(z),使其频率响应H(ejω)满足所希望得到的频域信号,也可以用卷积的形式来表示:
y(n)=x(n)*h(n)
典型的直接I型FIR滤波器如图1表示,其输出序列y(n)满足下式[5]:
y(n)=h(0)x(n)+h(1)x(n-1)+
h(2)x(n-2)+…+h(15)x(n-15)
图1 直接I型FIR滤波器
1.2 设计要求
数字滤波器实际上是一个采用有限精度算法实现的线性非时变离散系统。它的设计步骤是先根据需要确定其性能指标,设计一个系统函数h(n)逼近所需要的性能指标,滤波器的系数计算可以借助Matlab强大的计算功能和现成滤波器设计工具来完成,最后采用有限的精度算法实现[5]。该系统的设计指标为:设计一个16阶的低通滤波器,选模拟信号的采样频率Fs为5 kHz,要求信号的截止频率Fc=1 kHz,输入序列的位宽为9位(最宽位为符号位)。激励源为幅值为27,频率为800 Hz与1 600 Hz两个信号的混频信号。
2 基于DSP Builder设计FIR滤波器
2.1 DSP Builder介绍
DSP Builder是美国Altera公司推出的一个面向DSP开发的系统级设计工具,它在Quartus Ⅱ设计环境中集成了Matlab和Simulink DSP开发软件。
以往使用的Matlab工具仅仅作为DSP算法的建模和基于纯数学的仿真,其数学模型无法为硬件DSP应用系统直接产生实用的程序代码,仿真测试的结果也往往是基于数学的算法结果。而以往的FPGA所需要的传统基于硬件描述语言的设计因考虑了FPGA硬件的延时与VHDL递归算法的衔接,以及补码运算和乘积结果截取等问题,所以相当繁琐。
而对于DSP Builder而言,它作为Matlab的一个Simulink工具箱,使得用FPGA设计的DSP系统完全可以通过Simulink的图形化界面进行建模、系统级仿真。设计模型可直接向VHDL硬件描述语言转换,并自动调用QuartusⅡ等EDA设计软件,完成综合、网表生成以及器件适配乃至FPGA
的配置下载,使得系统描述与硬件实现有机地融合,充分体现了现代电子技术自动化开发的特点与优势[6]。
2.2 FIR滤波器的设计
2.2.1 FIR滤波器参数选取
采用Matlab提供的滤波器专用设计工具FDAtool仿真设计的滤波器[7],可满足要求的FIR滤波器幅频特性,由于浮点小数在FPGA中实现得比较困难,且代价太大,因而需要将滤波器的系数和输入数据转化为整数,其中量化后的系统可以在Matlab主窗口中直接转化,对于输入数据,乘以28的增益用Altbus控制位宽转化为整数输入。
2.2.2 FIR滤波器模型的建立
根据FIR滤波器原理,可以利用FPGA来实现FIR滤波电路。DSP Builder设计流程的第一步是在Matlab/Simulink中进行设计输入的,即在Matlab的Simulink环境中建立一个MDL模型文件,用图形方式调用DSP Builder和其他Simulink库中的图形模块,构成系统级或算法级设计框图[6],如图2所示。
图2 FIR滤波器模型
2.2.3 在Simulink中的仿真并生成VHDL代码[8]
完成模型设计之后,可以先在Simulink中对模型进行仿真,可以通过Simulink中的示波器模块查看各个步骤的中间结果。输入信号采用800 Hz和1 600 Hz,幅值相同的两个正弦信号的叠加。仿真结果如图3所示。从仿真波形可以看出,通过滤波器之后,1 600 Hz的信号能够被很好地滤除[9]。
图3 Simulink中的仿真波形
双击Signal Compiler可对以上的设计模型进行分析,选择相应的芯片,将以上设计模块图文件“翻译”成VHDL语言。
2.2.4 Modelsim的RTL仿真[10]
在Simulink中进行的仿真属于系统验证性质的,是对mdl文件进行的仿真,并没有对生成的VHDL代码进行仿真。事实上,生成VHDL描述的是RTL级的,是针对具体的硬件结构,而在Matlab的Simulink中的模型仿真是算法级的,两者之间有可能存在软件理解上的差异,转化后的VHDL代码实现可能与mdl模型描述的情况不完全相符。这就需要针对生成的RTL级VHDL代码进行功能仿真,仿真结果如图4所示。
图4 Modelsim进行RTL仿真的波形
仿真结果说明,在Modelsim中仿真结果和Simulink里的仿真结果基本一致,该滤波器有较好的滤波效果。可以看出,输入正弦波经过数字化过程以后,能够在Modelsim中还原出模拟波形,符合设计的要求,可以在Quartus Ⅱ的环境下进行硬件设计[1]。
2.2.5 滤波器在FPGA上的实现[1]
在Quartus Ⅱ环境中,打开DSP Builder建立的Quartus Ⅱ项目文件,在Quartus Ⅱ中再进行一次仿真,由此可以看到符合要求的时序波形,然后指定器件引脚,并进行编译,最后下载到FPGA器件中,就可以对硬件进行测试,加上clok信号和使能信号,用信号发生器产生所要求的两个不同频率的正弦信号,就可以在示波器上看到滤波后的结果。需要设计不同的滤波器电路是仅修改FIR滤波器模型文件就可以实现,这样不仅避免了繁琐的VHDL语言编程,而且便于进行调整。
3 结 语
在利用FPGA进行数字滤波器开发时,采用DSP Builder作为设计工具,能加快进度。当然,在实际应用中,受精度、速度和器件选择方面的影响,可能对其转化的VHDL进行进一步的优化。
参考文献
[1]杨丽杰,崔葛瑾.基于FPGA的FIR滤波器设计方法的研究[J].东北大学学报,2006,32(6):93-96.
[2]程佩清.数字信号处理教程[M].北京:清华大学出版社,1995.
[3]胡广书.数字信号处理理论、算法与实现[M].北京:清华大学出版社,2002.
[4]田东生,王鹏.基于FPGA的FIR滤波器的设计与实现[J].电子测量,2007(10):54-57.
[5]张淼,伏云昌.基于DSP Builder的14阶FIR滤波器的设计[J].现代电子技术,2007,30(21):185-186.
[6]潘松,黄继业,王国栋.现代DSP技术[M].西安:西安电子科技大学出版社,2003.
[7]张志恒,王卫芳.基于Matlab信号处理工具箱的数字滤波器设计与仿真[J].电力学报,2007,22(1):54-56.
[8]王紫婷,郭海丽.基于Matlab/Simulink的数字滤波器IP核的设计与实现[J].兰州交通大学学报,2008,27(3):111-113.
关键词:FPGA;洗衣机;控制器
1 概述
洗衣机的发明使人类告别了手工洗衣的繁重劳动,但是最初由于技术不发达洗衣机的自动化程度显然不高,洗衣的几个过程仍需要人工切换操作来进行。随着科技的发展,洗衣机也由最初的洗涤和脱水的手动切换过程发展到了半自动半手工,发展成为目前普遍使用的全自动洗衣机,现实要求洗衣机的体积更小、集成度更高、应用更简单、洗衣机的控制引入了微型处理器进行编程,实现对洗衣机内外部水流的控制,洗衣机控制精度不同对控制器的精度要求也不同,对于控制精度要求高的洗衣机需要精度高的控制。本系统采用有FPGA芯片的在线可编程控制器,该系统控制器硬件使用VHDL语言设计而成,不仅性能稳定抗干扰能力强而且方便调试维护和系统升级,保障洗衣机系统的正常运行。
2 系统的功能部件介绍
该洗衣机控制器根据功能可以划分为五个模块,分别为时间预置编码器模块、减法计数器模块、数码管显示模块、时序电路模块和译码器模块。
(1)时间预置编码器模块:接收用户所输入的预置时间信息,并将时间信息进行编码,编码成机器语言后转交给减法计数器。
(2)减法计数器模块:将接收的编码时间预置信息转换成开始信号发送给电机使电机开始运行,并将预设的时间信息和剩余的时间信息发送给数码管模块进行显示。
(3)数码管显示电路模块:接收减法计数器模块传递的时间信息,并进行译码显示。
(4)电机时序控制电路:接收减法计数器模块传递的运行开始和结束信号,安排电机的运行状态并输出。
(5)译码器:接收电机运行状态的信号并译码,实现实时控制电机的正反转状态以及暂停状态。
3 控制逻辑各模块功能的VHPL语言实现
3.1 时间预置编码器模块的VHDL语言
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY FENG ISPORT(CP,CLR:IN STD_ 31A ISPORT(SEL:IN STD_LOGI
C_VECTOR(2 DOWNTO 0) D1,D2,D3:IN 1,Q2,Q3,Q4,ALM:OUT_ARCOFCH41ASBPIDEGINPROCESS(D1,D2,D3,D4)VARIPIDABLE:S;USEIEEE.STD_LOGIC_1164.ALLENTITYSELISPORTARCHITECTURBEGIN PROCESS(CLK) VARIABLEE.STD;WHENEND
CASE;ENDPROCESSNSIGNED.ALLNTITYCOUNTISPORT(CLK,EN:INH,L:OUTBEGINCLK'EVEN'THENIFEN='1'THENIFELSIFLL=0THENLL1PROCESS;ENDCOUNT_AREND DISP_ARC;
2,减法计数器模块的VHDL语言
LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALLENTITY LOCK
B IS PORT(D1,D2,D3,D4:IN STD_LOGIC; CLK,CLR:IN LOGIC;Q:OUT STD_LOGIC); END FENG; ARCHITECTURE FENG_ARC OF FENG IS BEGINPROCESS(CP,CLR) BEGINIF CLR='0'THEN QQEND PROCESS; END DISP_ARC;
3,数码管显示电路模块的VHDL语言
LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALLENTITYPIDCH4
1AISPORT(D1,D2,D3,D4:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(3DOWNTO 0)) END CH41A ARCHITECTURE CHCKB;ARCHITECTURELOCK_ARCOFLOCKBGIN PROCESS(CLK) BEGIN FENQ1
EVENTANDCLK='1'THEN Q1
4,电机时序控制电路的VHDL语言
LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALENTITYCH1AISPORT(SEL:IN STD_LOGIC_VECTOR(2DOWNTO0) ;ENDIF;ENDPROCESS;ENDFENG_ARC;USEIEEE.STD_LOGIC_1164.ALLENTITYSELISPORT(CLK:INSENDSELOR(3 DOWNTO 0)Q: OUT USEIEEE.STD_LOGIC_1164.ALLENTITYSELISPORTARCHITE
CTURBEGIN PROCESS(CL STD_LOGIC_VECTOR(3 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ENDCH31A;RCHITECTURECH31_ARC
4 结束语
本系统采用FPGA作洗衣机控制单元控制情度较高,成本低且控制效率高,能够满足各种类型洗衣机的控制要求。实际应用稳定抗干扰能力强和结构简单,而且占用硬件资源少,能够通过配置系统参数以满足不同类型洗衣机的控制要求,满足对洗衣机水位和洗涤力度的控制精度,具有一定的实际应用价值。
参考文献
[1]姜雪松,吴钰淳.VHDL设计实例与仿真[M].机械工业出版社,
(赤峰学院 物理与电子信息工程学院,内蒙古 赤峰 024000)
摘要:本文利用QuartusⅡ集成开发环境来完成译码器、LCD、流水灯等电路的设计,以FPGA实验开发板为运行载体,FPGA开发板FA280核心器件为Altera CycloneⅡ系列的EP2C8Q208,通过开发板上的USB Blaster将程序下载到开发板,实现VHDL硬件语言设计的译码器、LCD及数码管显示接口电路的运行显示.
关键词 :QuartusⅡ;译码器;显示接口
中图分类号:G642文献标识码:A文章编号:1673-260X(2015)05-0059-02
1 引言
在信息时代的今天,科技飞速发展,电子产品更新换代迅速,传统的设计方法再也不能满足市场需求,因此EDA技术在一些电子领域取得了惊人的成绩.当然,紧随科技脚步的高校自然也不会落后,由此EDA技术便在电子信息类专业中发展起来了.但传统的授课方式,让我们只能在课堂上通过老师的讲解来接触到EDA技术,抽象的知识让学生很难去深入理解和探索,这样理论与实践相结合就显得尤为重要了.EDA是将计算机技术应用到电子电路设计中,在QuartusⅡ环境中,运用输入原理图或硬件语言进行编译与仿真的技术.在开发板上可以实现数码管、LCD、流水灯、蜂鸣器等显示和发声的效果.
2 EDA教学实验开发板概述
本文用到的实验板是FPGA开发板FA280,FA280板载有SDRAM,flash以及USB Blaster下载线电路.利用QuartusⅡ集成开发环境来完成前期设计,以FPGA实验开发板为运行载体,来完成VHDL、Verilog HDL等一些硬件语言的运行显示.
FPGA开发板FA280,其核心器件为Altera CycloneⅡ系列的EP2C8Q208,是包含192个引脚,其中I/O口有183个,板载存储器包括SDRAM HY57V641620和Bytes,FLASH AM29LV320,存储空间分别为8M和4MBytes.SDRAM与系统总线速度同步,可避免不必要的等待周期.
接口包括:PS2接口、VGA接口、RS232串口、USB下载接口.开发板具有USB Blaster下载线电路,插上USB线即可进行下载,通过拨动USB下载接口开关选择JTAG或AS下载方式.
显示设备包括6位7段红光数码管,8位绿色LED发光二极管,LCD1602和LCD12864显示屏接口插座.
复位电路由一个复位按键和一个复位芯片组成的,可以将电路恢复到起始状态(相当于清零按钮).复位芯片为MAX811R,可将输出脉冲宽度为140ms、门限为2.63V的低电平有效复位脉冲信号提供给FA280.
电源部分包括1117-3.3和1117-1.2各一片,从功能板分别引入3.3V和1.2V的直流电源作为EP2C8的核心电源电压,并在核心板上加入滤波电容,以确保芯片和电源系统的稳定性.
其他还包括一个蜂鸣器、4位独立按键、电源插座和开关、SD卡座、扩展总线(GPIO)和有源晶振.
3 EDA技术的应用软件及开发流程
3.1 硬件描述语言VHDL
高级硬件描述语言VHDL已成为IEEE标准,适用于行为级和RTL级的描述,最适于描述电路行为,并在设计时可以不了解电路的结构细节.VHDL主要用于描述数字系统的结构、行为、功能和接口,其设计的基本点是将设计实体分成内、外部分.完整的VHDL程序要包含库、程序包、实体、构造体和配置等部分,它的描述语句和常用语句都有其固定的格式,并且有自己的语法,不允许不同类型的数据在表达式中自由组合.
3.2 开发流程
QuartusⅡ作为一个综合性的开发平台,可以完成多种功能的实现.QuartusⅡ的设计流程:首先输入HDL等形式的设计文本,接着根据设计要求设定编译方式和策略,然后进行设计校验(仿真和定时分析),最后进行编程与验证(将编程文件配置到PLD中).设计过程中,如果出现错误,则回到设计输入阶段改错,然后重复以上步骤.
设计输入:设计输入可以用HDL方式或原理图录入方式.一般可以使用原理图来设计最顶层,将整个设计的结构描述清楚,具体实现各模块时用HDL.对于HDL方式的设计输入,可以采用Verilog和VHDL,我们这里采用VHDL语言来实现.
综合:综合工具将设计转换成包含逻辑单元和逻辑单元间连接的网表文件.
功能仿真:对已经综合的电路的功能进行验证,功能仿真不涉及任何时序方面的内容.
配置:将综合产生的网络表中的逻辑单元映射到CPLD/FPGA器件中的LE,这里还包含器件中LE间连接和路由的选择.
时序分析和时序仿真:通过分析配置后的电路各个路径上的传输延时,获得电路的性能情况.这里的时序仿真将结合器件时间参数,与前面的功能仿真不同,功能仿真只关注与源程序的逻辑是否正确.
编程:在CPLD/FPGA器件内实现设计,包括逻辑单元和逻辑单元间的连接.
在做一个设计时,通常要对功能进行模块划分,每个模块对应一个源文件,用一个唯一的顶层文件将这些模块源文件组合起来,形成一个整体设计.顶层文件完成模块的例化工作,顶层文件可以用HDL语言编写,也可以用原理图的方式.
4 译码器与显示接口电路设计
4.1 3线-8线译码器
3线-8线译码器的仿真过程:运行Quartus II软件,建立工程项目,工程命名为lq.建立一个VHDL文件,命名为lq,文件后缀为.vhd,再将程序写入并保存,然后编译,确保没有错误后进行仿真,周期设为100ns.将输入端A2、A1、A0三位二进制代码按照真值表设定好;S_0、S_1、S_2为控制输入端,当s_0 and (not s_1)and (not s_2)为1时,译码器工作,当它为0时,译码器全为高电平;输出端Z-n7到Z-n0.在对端口进行设定,将A2、A1、A0和总控制端S设定为K1、K2、K3、K4四位独立按键作为输入端,其端口依次为I/O74、I/O72、I/O75、I/O76.输出端Z-n7~Z-n0对应的是LED8~LED1,其端口依次是I/O181、I/O175、I/O171、I/O169、I/O170、I/O173、I/O180、I/O182.设定好之后,再次进行编译仿真,没有错误即可进行配置,可以实现输入四位二进制代码,按照其原意翻译成相应的输出信号,体现在LED灯上.仿真波形如图1所示.
4.2 LCD显示
LCD的仿真过程:运行Quartus II软件,建立工程项目,工程命名为lcd1602.建立一个VHDL文件,命名为lcd1602,文件后缀为.vhd,再将程序写入并保存,然后编译,确保没有错误后进行仿真.先进行端口说明,输入端为:start - 启动显示、cmd - 命令、dat_i - 等显示的字符数据、clk - 时钟、rst - 复位信号(低电平有效).输出端为:lcd_e - lcd1602使能、lcd_rw - lcd1602读取有效、lcd_di - lcd1602数据/命令选择信号、lcd_dat - lcd1602数据、ok .完成对lcd1602的驱动,使lcd1602初始化,并显示字符.
然后以同样步骤建立名为lcddemo_ctrl的工程,到编译仿真.再进行端口说明,输入端为:ack -接收数据方已确认(上升沿有效)、init_ok-显示屏初始化完成、clk-时钟输入、rst-复位信号输入.输出端为:stb-输出数据通知信号,上升沿有效、dat-输出数据.还要对列出文本文件的内容进行设定(参考),就可以完成在lcd1602上显示两行字符“made by liu qin”.当然也可以显示其他内容,根据AsciI字符表编辑想要显示的代码,便可显示想要的字符.
4.3 流水灯
流水灯的设计主要由三个模块和一个顶层文件组成,其模块划分及功能说明如表1、表2:
FA280开发板硬件具有8位LED,为低电平驱动方式,即低电平点亮高电平熄灭.
本实验中实现以提供低电平方式点亮8个LED中的某一个或多个,其点亮模式代表了数据0~9和A~F,两次点亮的时间间隔为1s,以15s的周期循环重复.流水灯点亮方案如表2.流水灯显示仿真过程是对三个模块和一个顶层文件进行编译仿真,具体操作步骤如上两个实例.运行Quartus II软件,分别建立工程项目、VHDL文件,再将程序写入并保存,然后编译,确保没有错误后进行仿真.并对各模块的端口进行说明,实现其具体功能,完成流水灯的显示.
5 结语
本设计应用QuartusⅡ 9.0软件,采用VHDL语言,按照开发流程完成3线-8线译码器、LCD和流水灯的设计,得到相应的仿真波形并下载到实验开发板上观察显示实验结果.这个过程让学生熟悉了EDA技术和实验开发板的功能,及相关软件的应用.
参考文献:
〔1〕廖超平,EDA技术与VHDL实用教程.高等教育出版社,2007.
〔2〕闫石.数字电子技术基础.高等教育出版社,2006.
〔3〕汪国强.华成英,EDA技术与应用.电子工业出版社,2005.
〔4〕侯伯亨.VHDL硬件描述语言与数字逻辑电路设计.西安电子科技大学出版社,2009.
〔5〕潘松.EDA技术与应用.清华大学出版社,2005.
关键词:信道编码; 线性分组码; Max+Plus Ⅱ; VHDL
中图分类号:TP391 文献标识码:A
文章编号:1004-373X(2010)09-0116-02
Design of Linear Block Codes Based on VHDL
TANG Bing-hua, SHUI Qi-jun
(Department of Physics and Engineering Technology, Sichuan University of Arts and Science, Dazhou 635000, China)
Abstract: The interference reduces transmission reliability when digital signal is transmissed in signal path. Linear block code is widely used in communication transmission system as a common channel coding. The generating matrix, monitoring matrix and the relationship between the error pattern sets are discussed based on the coding and decoding rules of linear block codes. The Max+Plus Ⅱ software simulation and verification shows that its function comforms to the linear block code encoding and decoding device requirements.
Keywords: channel coding; linear block codes; Max+Plus Ⅱ; VHDL
在通信系统中,由于信道存在大量的噪声和干扰,使得经信道传输后的接收码与发送码之间存在差异,出现误码。在数字通信系统中常采用差错控制信道编码技术,以此来减少传输过程的误码,提高数字通信系统的传输质量[1]。它的基本原理是:发送端的信道编码器在信息码元序列中按照一定的关系加入一些冗余码元(称为监督码元),使得原来相关性很小的信息码元产生某种相关性,从而在接收端利用这种相关性来检查并纠正信息码元在传输中引起的差错。冗余度的引入提高了传输的可靠性,但降低了传输效率。
1 线性分组码
分组码是由一组固定长度为n,称之为码字的矢量构成的。线性分组编码时,将每k个信息位分为一组独立处理,按一定规则给每个信息组增加(n-k)个监督码元,组成长度为n的二进制码字,这种编码方式记为是(n,k)分组码[2]。信息位和监督位采用的关系式由┮蛔橄咝苑匠趟决定,称之为线性分组码。
若线性分组码的输入信息位为U=(U0,U1,…,Uk),编码输出为C=(C0,C1,…,Cn),则有如下关系:
C=U•G
H•CT=OT
(1)
式中:G为线性分组码的生成矩阵;H为监督矩阵。当G确定后,编码的方法就完全确定了,而H给定后,编码时监督位和信息位的关系也就确定了。因此,在设计分组码编码器时,需要确定生成矩阵G;在设计分组码译码器时,需要确定监督矩阵H。
2 线性分组码编译码器设计
2.1 线性分组码编码器设计
设G=
0 0 1 0 1 1
1 0 0 1 0 1
0 1 0 1 1 0,由于生成矩阵G是k行n列,所以k=3,n=6,改(n,k)码为(6,3)码。根据生成矩阵和式(1)运算后得到相应的编码。即由:
(C0,C1,C2,C3,C4,C5)=
(U0,U1,U2)• 0 0 1 0 1 1
1 0 0 1 0 1
0 1 0 1 1 0
可得:
C0=U1,C1=U2,C2=U0,
C3=U1+U2,C4=U0+U2,C5=U0+U1
COUT=(C0,C1,C2,C3,C4,C5)为编码输出,其中前3个分量为增加的监督码元,后3个为原输入信息位。
2.2 线性分组码译码器设计
将生成矩阵G进行初等运算:原矩阵的第2,3,1行分别作为典型矩阵的第1,2,3行,可得典型生成矩阵:
G=1 0 0 1 0 10 1 0 1 1 00 0 1 0 1 1=IkQ
Q=1 0 11 1 01 1 0,P=QT=1 1 00 1 11 0 1
于是,典型监督矩阵H为:
H=[PIr]=1 1 0 1 0 00 1 1 0 1 01 0 1 0 0 1
(2)
监督码元与信息码元之间的关系称为监督方程式(监督关系式),监督矩阵的每行中“1”的位置表示相应码元之间存在的监督关系,即下述三个监督方程:
Y0Y1Y3=0
Y1Y2Y4=0
Y0Y2Y5=0(3)
发送的码字C=(C0,C1,…,Cn)。e表示传输中的差错;Y表示接收的码字。如果码字在传输过程中没有出现差错,则有HYT=HeT=0;出现差错时,则有HYT=H(Ce)T=HeT=ST,S=eHT。其中,S称为伴随子,又称为校正子。由于S只与序列传输中的差错e有关,因此在编码的能力之内,一定的e序列必然对应一定的S组合。可以在接收机中做好对应表,然后根据序列S准确地判断差错位置,再根据出错位置进行纠正,可得到正确的译码输出。根据式(2)可计算接收矢量Y的伴随子S=Y•HT。这里:
(S0,S1,S2)=(Y0,Y1,Y2,Y3,Y4,Y5)•
1 0 1
1 1 0
0 1 1
1 0 0
0 1 0
0 0 1
S0=Y0+Y1+Y3,S1=Y1+Y2+Y4,
S2=Y0+Y2+Y5
错误图样即校正子与错码位置的关系,因为r=3,所以有3个校正子,相应的有3个监督关系式。将┦(3)改写为[3]:
Y0Y1Y3=S0
Y1Y2Y4=S1
Y0Y2Y5=S2
(4)
则可得由伴随子S决定对应的错误图样集e,即为典型监督矩阵的转置HT,如表1所示。
表1 错误图样表
错码位置(e码)S0S1S2错码位置(e码)S0S1S2
Y5101Y1010
Y4110Y0001
Y3011无错000
Y2100
3 仿真及分析
图1、图2分别为线性仿真分组编码器、译码器电路的仿真波形。图中各参数含义如下:
clk是系统时钟信号输入;
UI是编码器中三位线性分组码的输入;
CO是编码器中六位编码的输出;
Y是解码器中六位编码的输入;
c是解码器中六位译码的输出。
图1 线性仿真分组编码器仿真波形
图2 线性仿真分组译码器仿真波形
在图1、图2中,截取了仿真的部分波形进行分析,产生的六位编码CO、六位译码Y完全依据线性分组码的编译码规则,任意两个许用码组之和(逐位模2加)仍为一许用码组,即具有封闭性。
4 结 语
对线性分组码编、译码器的设计基于VHDL(硬件描述语言)[4-10],与传统设计相比较,采用VHDL语言设计的线性分组码编、译码器无需考虑具体电路的实现,只需要掌握编译码原理,根据相应的编译码规则转换成VHDL语言,大大减少了设计人员的工作量,提高了设计的准确性和效率。程序已在Max+Plus Ⅱ10.0工具软件上进行了编译、仿真和调试。经过实验结果的分析,说明本设计是正确的。本文给出的设计思想也适用于其他基于PLD芯片的系统设计。
参考文献
[1]曹丽娜,樊昌信.通信原理[M].6版.北京:国防工业出版社,2007.
[2]曹雪虹,张宗橙.信息论与编码[M].北京:北京邮电大学出版社,2003.
[3]黄智伟.PFGA系统设计与实践[M].北京:电子工业出版社,2007.
[4]曾繁泰,陈美全.VHDL程序设计[M].北京:清华大学出版社,2001.
[5]王锁萍.电子设计自动化(EDA教程)[M].西安:西安电子科技大学出版社,2000.
[6]宋嘉玉,孙丽霞.EDA实用技术[M].北京:人民邮电出版社,2006.
[7]刘云仙.VHDL在数字电路设计中的应用[J].浙江科技学院学报,2004(9):167-168.
[8]潘松,黄继业.EDA技术实用教程[M].北京:科学出版社,2002.
关键词:项目教学;电子设计自动化;方案
0引言
教学方案是指教师在教学过程中对教学内容、教学方法、教学步骤以及要达到的教学效果等所进行的精心编排和设计,是教师对教材的认识和处理,以及对学生学习方法的指导,是进行课堂教学的实施方案[1]。一个好的教案不仅能指导学生“学会”,而且还引导学生“会学”,从而顺利地完成教学任务。因此,教学方案的设计就成为课堂教学的重中之重。在《电子设计自动化》教学中采用了项目教学法,通过具体的项目设计,实施“项目导向”教学模式,学生在老师的引导下,从每一个项目入手,在好奇心的驱动下,对理论知识进行学习,对项目任务进行设计,对实践操作进行实施,在“做中学”,在“学中做”,对培养学生的综合实践能力和创新思维能力具有积极的促进作用[2]。现将本人设计的基于项目教学法的“三人表决器”教学方案介绍如下。
1教学目标
1.1知识目标
熟练掌握VHDL程序的基本结构;掌握IF语句、CASE语句的格式及用法;理解IF语句和CASE语句的区别。
1.2技能目标
①科研创新能力:本项目要在QUARTUSII软件下用编程的方式设计三人表决器的电路,并且可以采用多种编程方式来实现,深切地让学生体会到该设计方法的灵活性,开阔学生的视野,培养学生分析问题,解决问题的能力,培养学生的创造与创新理念。②电路设计能力:通过进一步的学习,学生又掌握了利用一种编程语言VHDL来设计电路的能力,提高了学生电路设计能力。③分析问题、解决问题的能力:通过在设计过程中不断提出问题,让学生分小组讨论并给出结论,让学生在思考的同时提高了分析问题和解决问题的能力。
1.3情感目标
①树立专业自信:激发学生的学习兴趣,坚定学生从事电子行业的信念,培养学生对电子专业的热爱。②培养课程兴趣:通过创设情景、实物演示,提出三人表决器在各种选举和组织竞赛活动中的应用等问题激发学生对电路设计的好奇心和求知欲;通过自主完成整个电路的制作,体验成功的喜悦,增强自信心和成就感。③培养良好的学习习惯:针对学生的专业知识特点,采用多元化的教学方法,鼓励学生积极表达自己的想法,培养学生良好的学习态度和学习习惯。④培养创新精神:通过设计三人表决器,培养学生采用多种方案实现同一种电路的创新精神,体会到条条大路通罗马。⑤培养团队合作精神:通过小组合作的方式,大家互相取长补短,共同进步,共同提高,培养了大家的团队协作精神。
2教学重点难点及解决方法
教学重点包括:IF语句、CASE语句的语句格式及注意事项;IF语句和CASE语句的区别;IF语句和CASE语句的具体应用。教学难点包括:IF语句和CASE语句的具体应用。为了突出重点,突破难点,采取了以下方法:①课前“任务”导学:通过提前给学生布置预习任务让学生提前预习课本第4章《VHDL的主要描述语句》这部分内容,使学生在课前对VHDL的顺序语句的IF语句、CASE语句有所了解。②课中“内容”导教:课上借助图片、现场演示、软件仿真等手段进行导教,使授课内容更加形象、直观,配合课堂练习,加强学生对知识点的掌握。③课后“知识”拓展:推荐学生阅读参考书以及相关的网络资源并布置随堂作业,让学生开阔视野,加深对所学知识的理解。
3学情分析
3.1知识基础
本门课程的教学安排在第六学期进行,授课对象是电子专业大三的学生,他们已经学习了《单片机技术》、《专业软件选讲》、《检测与转换技术》等专业课,已经具备了一定的电子设计基础,好奇心强,动手能力较强,合作能力也很好,为本门课的学习打下了基础。学生之前学习过C语言,对学生理解VHDL语言有一定的帮助,但部分同学理论基础较差,对单纯的理论学习缺乏兴趣,所以要将理论和实践相相结合,帮学生克服理论基础薄弱问题。学生在前面的课程中对VHDL程序的基本结构已经熟练掌握,对EDA技术的设计流程也已经掌握,并且有了一定的编程基础,在此基础上进行VHDL描述语句的学习水到渠成。
3.2认知特点
大多数学生学习态度比较端正,有一定的自学能力和利用互联网查找资料的能力,同时对电子设计的兴趣较高,求知欲比较强烈。本门课程是学生以前没有接触过的用软件编程的方式来描述硬件电路的形式,学生经过前面几周的学习已经能理解这种语言和以往所学编程语言的不同。
3.3学习风格
电子专业学生动手能力强,课堂气氛活跃,对电路设计的求知欲很强,但是有部分学生自我约束力较差,注意力不集中,自主学习能力和自我约束能力有待提高。
4教材分析
本单元内容源自潘松主编的《EDA实用教程—VHDL版》(第五版),该教材属于“十二五”普通高等教育本科国家级规划教材,适用于电子类相关专业使用。该注重实践、实用和创新能力的培养,注重教学选材的灵活性和完整性相结合,有助于学生掌握EDA的相关基础知识达到快速入门的目的。本次课以一个具体的三人表决器的项目为依托,讲解VHDL的IF语句、CASE语句等相关知识点。在教学内容上起着承上启下的作用,也是实现电路设计的语言工具和手段。
5教学过程设计
基于项目教学法的“三人表决器”的教学过程设计如表1所示。
6总结
总之,教师在编制教学流程、构思课的主旋律时,必须符合教育教学规律,使之结构巧妙,引人人胜。特别是要改变过去只考虑教师“如何教”,而忽视学生“怎样学”的做法[3]。“教”为“学”服务,教师的“教”要激发学生“学”的兴趣,精心设疑,发展求异思维,培养学生的自学能力,将理论知识和实践操作结合起来,让学生在“做中学”,老师在“做中教”。另外,在教学过程中应该采用多样化的教学手段,在采用“项目教学法”的同时,穿插使用实物演示法、启发式教学法、讨论式教学法等。将传统的老师讲学生听的模式改为以学生为主体的教学方法,增强学生对所学理论知识的认识,同时培养学生运用理论知识解决实际问题的能力,促进学生的自主学习能力。
参考文献:
[1]杨帆.建筑材料课在工学结合过程中引入项目教学法的方案设计探究[J].教学探索,2015(08):102-103.
[2]徐学红.“项目导向”教学模式在EDA技术课程中的应用[J].中国电力教育,2013(28):108-109.
关键词:VHDL; 彩灯控制器; 变换模式; EP1K30QC208
中图分类号:TN710; TP332.1 文献标识码:A
文章编号:1004-373X(2010)14-0180-03
Design of Adjustable Speed Sixteen Groups Illuminations Controller Based on VHDL
ZHANG Xi-feng,QU Bao-peng
(Electronics Engineer Department, Sh
nxi Institute of Technology, Xi'an 710300,China)
Abstract: The FPGA/CPLD is applied in digital system development extensively with the development of large scale integrated circuit. Illuminations which are common decorations have a broad application in daily life. In order to make the illuminations colorful, a switch speed adjustable controller which can control 16 groups of illuminations and has 4 switch patterns was designed with the language of VHDL in the environment of Quartus II. The simulation results indicate that the designed controller realized the cycle of 4 switch patterns and all sorts of speeds adjustable. The validity of whole designed functions is verified with the EP1K30QC208 chip of ACEX1K series.
Keywords: VHDL; illuminations; controller; switch mode; EP1K30QC208
0 引 言
近年来,FPGA/CPLD发展迅速,随着集成电路制造工艺的不断进步,高性价比的FPGA/CPLD器件推陈出新[1-3],使FPGA/CPLD成为当今硬件设计的重要途径,与传统电路设计方法相比,FPGA/CPLD具有功能强大、开发周期短、投资少,便于追踪市场变化及时修改产品设计以及开发工具智能化等特点[4]。在诸多FPGA/CPLD的设计语言中,VHDL语言作为一种主流的硬件描述语言,具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性,并在语言易读性和层次化、结构化设计方面,表现出了强大的生命力和应用潜力[5-6]。
Quartus Ⅱ是Altera公司在21世纪初推出的FPGA/CPLD集成开发环境,是Altera公司前一代FPGA/CPLD集成开发环境Max+PlusⅡ的更新换代产品,其界面友好,使用便捷,功能强大,为设计者提供了一种与结构无关的设计环境,使设计者能方便的进行设计输入、快速处理和器件编程[7-8]。
本文在Quartus Ⅱ开发环境下,用VHDL语言设计了一种可用于控制16路彩灯,具有4种彩灯变换模式,且变换速度可调的彩灯控制器。
1 16路可调速彩灯控制器设计思路
16路可调速彩灯控制器根据功能可分为3个部分,如图1所示。其中,8 Hz分频部分用于对频率为10 MHz的时钟信号进行分频,获得频率为8 Hz的时钟信号CLK8。CLK8作为速度控制部分的基准时钟,通过计数分频方式又可获得频率分别为4 Hz,2 Hz和1 Hz的时钟信号,然后由调速信号选择其中之一作为彩灯时钟信号CLKQ,CLKQ即为彩灯控制部分的基准时钟,用于决定彩灯变换的速度,由此实现调速信号SPD对彩灯变换速度的控制,使彩灯可调速。
图1 16路可调速彩灯原理图
彩灯控制部分通过输出1个16位二进制数(即彩灯输出信号Q)来控制16个彩灯,每一位二进制数对应1个彩灯的开关,当该位数字为“1”时灯亮,该位数字为“0”时灯灭。彩灯的变换共设置4种模式:
s0模式:只亮1个灯,从最左端逐个移动到最右端,即输出信号Q从第15位开始将1个“1”依次移动到第0位;
s1模式:只亮1个灯,从最右端逐个移动到最左端,即输出信号Q从第0位开始将1个“1”依次移动到第15位;
s2模式:亮2个灯,同时从左右两端向中间移动,即输出信号Q从第15位开始将1个“1”依次移动到┑8位,同时从第0位开始将1个“1”依次移动到┑7位;
s3模式:亮2个灯,同时从中间向左右两端移动,即输出信号Q从第8位开始将1个“1”依次移动到┑15位,同时从第7位开始将1个“1”依次移动到┑0位。
四种模式依次循环,若复位信号RST输入为高电平,则循环中断,输出信号Q置零,彩灯全灭,RST恢复为低电平后,再次从s0模式开始循环。
2 16路可调速彩灯控制器的实现
本文所设计的16路可调速彩灯控制器,其电路符号如图2所示,其中clk为10 MHz时钟信号输入端,rst为复位控制端,spd为调速信号输入端,q为彩灯控制信号输出端。
图2 16路可调速彩灯控制器的电路符号
本文所设计的16路可调速彩灯控制器的VHDL代码如下所示:
LIBRARY IEEE;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY lights16 IS
PORT(clk: in std_logic;----10MHz时钟输入信号
rst: in std_logic;----复位信号
spd: in std_logic_vector(1 downto 0);
q: out std_logic_vector(15 downto 0));
END lights16;
ARCHITECTURE one OF lights16 IS
type states is (s0,s1,s2,s3);----定义4种模式
signal present:states;
signal clk8hz:std_logic;
signal clkq:std_logic;
signal q1:std_logic_vector(15 downto 0);
signal cnt:std_logic_vector(3 downto 0);
BEGIN
process(clk)----8Hz分频
variable count:integer range 0 to 624999;
begin
if clk′event and clk=′1′ then
if count=624999
then clk8hz
else count:=count+1;
end if;
end if;
end process;
process(clk8Hz)----速度控制
variable count1:std_logic_vector(2 downto 0);
begin
if clk8Hz′event and clk8Hz=′1′
then count1:=count1+1;
end if;
case spd is
when"00"=>clkq
when"01"=>clkq
when"10"=>clkq
when"11"=>clkq
end case;
end process;
----系统复位
process(clkq,rst)
begin
if rst=′1′ then present
elsif clkq′event and clkq=′1′ then
case present is
----s0模式:从左到右逐个点亮LED
when s0=>
if q1="0000000000000000"
then q1
elsif cnt="1111" then
cnt′0′);
q1
present
else q1
cnt
end if;
----s1模式:从右到左逐个点亮LED
when s1=>
if cnt="1111" then
cnt′0′);
q1
present
else q1
cnt
end if;
----s2模式:从两边到中间逐个点亮LED
when s2=>
if cnt="1111" then
cnt′0′);
q1
present
else q1(15 downto 8)
q1(7 downto 0)
cnt
end if;
----s3模式:从中间到两边逐个点亮LED
when s3=>
if cnt="1111" then
cnt′0′);
q1
else q1(15 downto 8)
q1(7 downto 0)
cnt
end if;
end case;
end if;
end process;
q
END ARCHITECTURE one;
值得注意的是,本文设计的16路可调速彩灯控制器使用了数据循环算法,较以往的case when语句[10],更加简洁,实现的功能更加强大,其具有如下特点:
(1) 在硬件验证时,将速度控制端spd的pin脚接到拨码开关上,从而实现彩灯变换速度快慢的手动控制,在更进一步的设计中,也可以通过对spd信号的内部控制,实现各种变换速度的自动调整。
(2) 该设计采用数据移位的方式实现彩灯的变换,更有利于彩灯变换模式的扩展。该设计虽然只设计了4种变换模式,但可以根据需要轻松的扩展至6~8种模式,甚至更多。
(3) 8 Hz分频部分的分频比很大,不适于计算机仿真验证,在仿真时需要调小分频比,在硬件验证时再恢复较大的分频比。
3 仿真结果分析
本文设计的16路可调速彩灯控制器在Quartus Ⅱ开发环境下进行了仿真验证,仿真波形如图3所示。仿真结果分析如下:
(1) clk为时钟信号,由时钟信号的上升沿触发分频器计数;
(2) rst为复位信号输入端,当其为高电平时,彩灯控制输出信号q清零,rst恢复为低电平后彩灯控制输出信号q从s0模式重新开始循环;
(3) spd为调速信号输入端,对应于spd的“00”,“01”,“10”,“11”这4个数值,彩灯变换的速度分别为1 Hz,2 Hz,4 Hz,8 Hz;
(4) q为彩灯控制信号输出端,由图3可知,该设计成功地实现了4种变换模式的循环和各种变换速度的调节。
图3 16路可调速彩灯控制器仿真波形
4 结 语
设计的16路可调速彩灯控制器在Quartus Ⅱ开发环境下进行了仿真验证后,下载到湖北众友科技实业股份有限公司的ZY11EDA13BE实验箱中进行了硬件验证,该实验箱使用ACEX1K系列EP1K30QC208芯片作为核心芯片,实验证明设计正确,功能完整,运行稳定。另外,本文所设计的16路可调速彩灯控制器可根据需要增加更多的变换模式,使彩灯更加绚丽多姿。
参考文献
[1]潘松,黄继业.EDA技术实用教程[M].北京:科学出版社,2004.
[2]康华光.电子技术基础(数字部分)[M].北京:高等教育出版社,2004.
[3]马或,利,王丽英.CPLD/FPGA可编程逻辑器件实用教程[M].北京:机械工业出版社,2006.
[4]侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计[M].西安:西安电子科技大学出版社,2000.
[5]李国丽,朱维勇,栾铭.EDA与数字系统设计[M].北京:机械工业出版社,2005.
[6]卢毅,赖杰.VHDL与数字电路设计[M] .北京:科学出版社,2001.
[7]李志,田永清,朱仲英.VHDL的设计特点与应用研究[J].微型电脑应用,2002(10):5-8.