完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
随着CPLD(Complex Programmable Logic Device)、FPGA(Field Programmable Gate Arrays)等逻辑器件的逐渐兴起,ASIC(专用集成电路)技术的不断完善,EDA(电子设计自动化)技术在现代数字系统和微电子技术应用中显示出了越来越重要的作用,而现代EDA技术的重要特征是采用了硬件描述语言,即VHDL描述。 VHDL(Very High Speed Integrated Circuit Hardware Description Language)即超高速集成电路硬件描述语言,是一种数字硬件系统设计和描述的国际标准语言,具有与工艺无关、支持大规模系统设计等特点。VHDL语言主要用于描述数字系统的结构、行为、功能和接口,是电子设计自动化(EDA)的关键技术之一。 随着集成电路和计算机技术的飞速发展,目前数字系统的设计可以直接面向用户需求,根据系统的行为和功能要求,自上至下地逐层完成相应的描述、综合、优化、仿真和验证,直到生成器件。 本文介绍了使用VHDL语言实现CPLD设计的方法,并以此方法在ALTERA公司的CPLD器件EPM7128SQC100-10上实现8位到32位的双向数据转换器芯片。 2.系统介绍 在控制系统中,存储器是嵌入式系统的重要组成部分之一。高速数据获取常用到存储器作数据缓冲存储器,其原因是微控制器及常规总线难以及时地处理现场高速输出的数据流。数据缓存器既能防止数据流中数据的丢失,又能便于采集部分与微控制器的接口。 在数据获取系统中,采用集成度高、读写速度快、支持突发式读写、功耗低、性价比高的同步动态随机存储器SDRAM(Synchronous Dynamic Random Access Memory)。但是,与SRAM相比,SDRAM存储器有复杂的时序要求,需要定时刷新,为此,必须设计一个SDRAM控制器。为了使微控制器的数据总线(8位)与SDRAM控制器的数据总线(32位)相匹配,利用VHDL语言实现8位到32位的双向数据转换,使整个数据获取系统能可靠正常工作。 3. VHDL程序设计 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; entity data_convert is generic( DSIZE :integer:=32; MSPDATA :integer:=8 ); port( CLK :in std_logic; DATAOUT :out std_logic_vector(DSIZE-1 downto 0); DATAIN :in std_logic_vector(DSIZE-1 downto 0); DATA :inout std_logic_vector(MSPDATA-1 downto 0); WR :in std_logic ); end data_convert; architecture behavioral of data_convert is SUBTYPE state_type IS std_logic; signal temp_datain :std_logic_vector(31 downto 0); signal state:state_type; signal counter :integer RANGE 0 TO 3; signal cycle :std_logic; constant write :state_type:='1'; constant read :state_type:='0'; begin process(WR,CLK) begin if CLK'event AND CLK='1' THEN if WR = '1' THEN state <= write; else state <= read; end if; case state is when write=> if(counter<=3) THEN counter <= counter+1; cycle<='0'; case counter is when 0 => temp_datain(7 downto 0) <=DATA(MSPDATA-1 downto 0); when 1 => temp_datain(15 downto 8) <= DATA(MSPDATA-1 downto 0); when 2 => temp_datain(23 downto 16) <= DATA(MSPDATA-1 downto 0); when 3 => temp_datain(31 downto 24) <= DATA(MSPDATA-1 downto 0); when others =>temp_datain(7 downto 0) <="00000000"; end case; ELSE DATAOUT<=temp_datain; counter <=0; cycle <='1'; end if; when read=> if(counter<=3) THEN counter <= counter+1; case counter is when 0 => DATA(MSPDATA-1 downto 0) <=DATAIN (DSIZE-1 downto 24); when 1 => DATA(MSPDATA-1 downto 0) <=DATAIN (23 downto 16); when 2 => DATA(MSPDATA-1 downto 0) <=DATAIN (15 downto 8); when 3 => DATA(MSPDATA-1 downto 0) <=DATAIN (7 downto 0); when others =>DATA(MSPDATA-1 downto 0) <="00000000"; end case; ELSE counter <=0; end if; when others=>NULL; end case; end if; end process; end architecture behavioral; 4. 结语 随着集成电路技术的发展,用传统的方法进行芯片或系统设计已不能满足要求。CPLD芯片的使用可以有效地缩短系统的开发周期,降低系统成本。VHDL语言描述和抽象能力强,覆盖面广,用它来开发CPLD可以大大减轻设计人员的工作强度,提高设计质量。 |
|
相关推荐
|
|
990 浏览 0 评论
328 浏览 0 评论
在只有一个电子负载仪的情况下,如何持续监控并记录太阳能充电板的全程充电电流?
2198 浏览 1 评论
6498 浏览 1 评论
9729 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 13:28 , Processed in 0.635918 second(s), Total 67, Slave 50 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号