地大EDA第三次作业.docx

上传人:b****7 文档编号:15482395 上传时间:2023-07-04 格式:DOCX 页数:27 大小:441.21KB
下载 相关 举报
地大EDA第三次作业.docx_第1页
第1页 / 共27页
地大EDA第三次作业.docx_第2页
第2页 / 共27页
地大EDA第三次作业.docx_第3页
第3页 / 共27页
地大EDA第三次作业.docx_第4页
第4页 / 共27页
地大EDA第三次作业.docx_第5页
第5页 / 共27页
地大EDA第三次作业.docx_第6页
第6页 / 共27页
地大EDA第三次作业.docx_第7页
第7页 / 共27页
地大EDA第三次作业.docx_第8页
第8页 / 共27页
地大EDA第三次作业.docx_第9页
第9页 / 共27页
地大EDA第三次作业.docx_第10页
第10页 / 共27页
地大EDA第三次作业.docx_第11页
第11页 / 共27页
地大EDA第三次作业.docx_第12页
第12页 / 共27页
地大EDA第三次作业.docx_第13页
第13页 / 共27页
地大EDA第三次作业.docx_第14页
第14页 / 共27页
地大EDA第三次作业.docx_第15页
第15页 / 共27页
地大EDA第三次作业.docx_第16页
第16页 / 共27页
地大EDA第三次作业.docx_第17页
第17页 / 共27页
地大EDA第三次作业.docx_第18页
第18页 / 共27页
地大EDA第三次作业.docx_第19页
第19页 / 共27页
地大EDA第三次作业.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

地大EDA第三次作业.docx

《地大EDA第三次作业.docx》由会员分享,可在线阅读,更多相关《地大EDA第三次作业.docx(27页珍藏版)》请在冰点文库上搜索。

地大EDA第三次作业.docx

地大EDA第三次作业

第七章宏功能模块与IP应用

7-5

将例7-4的顶层程序和例7-3的ROM程序合并成为一个程序,要求用例化语句直接调用LPM模块altsyncram,编译验证,使之功能与原设计相同。

VHDL文件:

LIBRARYIEEE;

LIBRARYaltera_mf;

USEaltera_mf.altera_mf_components.all;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYSINGTIS

PORT(CLK:

INSTD_LOGIC;

DOUT:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

END;

ARCHITECTUREDACCOFSINGTIS

COMPONENTaltsyncram

GENERIC(

intended_device_family:

STRING;

width_a:

NATURAL;widthad_a:

NATURAL;

numwords_a:

NATURAL;operation_mode:

STRING;

outdata_reg_a:

STRING;address_aclr_a:

STRING;

outdata_aclr_a:

STRING;width_byteena_a:

NATURAL;

init_file:

STRING;lpm_hint:

STRING;

lpm_type:

STRING);

PORT(clock0:

INSTD_LOGIC;

address_a:

INSTD_LOGIC_VECTOR(5DOWNTO0);

q_a:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDCOMPONENT;

SIGNALQ1:

STD_LOGIC_VECTOR(5DOWNTO0);

BEGIN

PROCESS(CLK)

BEGIN

IFCLK'EVENTANDCLK='1'THENQ1<=Q1+1;

ENDIF;

ENDPROCESS;

altsyncram_component:

altsyncram

GENERICMAP(intended_device_family=>"Cyclone",

width_a=>8,

widthad_a=>6,

numwords_a=>64,

operation_mode=>"ROM",

outdata_reg_a=>"UNREGISTERED",

address_aclr_a=>"NONE",

outdata_aclr_a=>"NONE",

width_byteena_a=>1,

init_file=>"./dataHEX/SDATA.hex",

lpm_hint=>"ENABLE_RUNTIME_MOD=YES,INSTANCE_NAME=NONE",

lpm_type=>"altsyncram")

PORTMAP(clock0=>clk,address_a=>Q1,q_a=>DOUT);

END;

RTL文件:

实验与设计

7-2

(1)8位十六进制频率计设计

VHDL描述:

LIBRARYIEEE;--测频控制

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYftctrlIS

PORT(CLKK:

INSTD_LOGIC;--1Hz

CNT_EN,RST_CNT,LOAD:

OUTSTD_LOGIC);

ENDftctrl;

ARCHITECTUREbehavOFftctrlIS

SIGNALDIV2CLK:

STD_LOGIC;

BEGIN

PROCESS(CLKK)

BEGIN

IFCLKK'EVENTANDCLKK='1'THENDIV2CLK<=NOTDIV2CLK;

ENDIF;

ENDPROCESS;

PROCESS(CLKK,DIV2CLK)

BEGIN

IFCLKK='0'ANDDiv2CLK='0'THENRST_CNT<='1';

ELSERST_CNT<='0';ENDIF;

ENDPROCESS;

LOAD<=NOTDIV2CLK;CNT_EN<=DIV2CLK;

ENDbehav;

LIBRARYIEEE;--32位锁存器

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYREG32BIS

PORT(LK:

INSTD_LOGIC;

DIN:

INSTD_LOGIC_VECTOR(31DOWNTO0);

DOUT:

OUTSTD_LOGIC_VECTOR(31DOWNTO0));

ENDREG32B;

ARCHITECTUREbehavOFREG32BIS

BEGIN

PROCESS(LK,DIN)

BEGIN

IFLK'EVENTANDLK='1'THENDOUT<=DIN;--时钟到来时,锁存输入数据

ENDIF;

ENDPROCESS;

ENDbehav;

LIBRARYIEEE;--32位计数器

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYcounter32bIS

PORT(ENABL,CLR,FIN:

INSTD_LOGIC;

DOUT:

OUTSTD_LOGIC_VECTOR(31DOWNTO0));

ENDcounter32b;

ARCHITECTUREbehavOFcounter32bIS

SIGNALCQI:

STD_LOGIC_VECTOR(31DOWNTO0);

BEGIN

PROCESS(ENABL,CLR,FIN)

BEGIN

IFCLR='1'THENCQI<=(OTHERS=>'0');--清零

ELSIFFIN'EVENTANDFIN='1'THEN

IFENABL='1'THENCQI<=CQI+1;

ENDIF;

ENDIF;

ENDPROCESS;

DOUT<=CQI;

ENDbehav;

libraryieee;

useieee.std_logic_1164.all;

entitypreqtestis

port(clk1hz:

instd_logic;

fsin:

instd_logic;

dout:

outstd_logic_vector(31downto0));

endpreqtest;

architecturestrucofpreqtestis

componentftctrl

port(clkk:

instd_logic;

cnt_en:

outstd_logic;

rst_cnt:

outstd_logic;

load:

outstd_logic);

endcomponent;

componentcounter32b

port(fin:

instd_logic;

clr:

instd_logic;

enabl:

instd_logic;

dout:

outstd_logic_vector(31downto0));

endcomponent;

componentreg32b

port(lk:

instd_logic;

din:

instd_logic_vector(31downto0);

dout:

outstd_logic_vector(31downto0));

endcomponent;

signaltsten1:

std_logic;

signalclr_cnt1:

std_logic;

signalload1:

std_logic;

signaldt01:

std_logic_vector(31downto0);

signalcarry_out1:

std_logic_vector(6downto0);

begin

u1:

ftctrlportmap(clkk=>clk1hz,cnt_en=>tsten1,

rst_cnt=>clr_cnt1,load=>load1);

u2:

reg32bportmap(lk=>load1,din=>dt01,dout=>dout);

u3:

counter32bportmap(fin=>fsin,clr=>clr_cnt1,

enabl=>tsten1,dout=>dt01);

endstruc;

RTL文件:

波形仿真:

第八章状态机设计

8-5在不改变原代码功能的条件下用两种方法改写例8-2,使其输出的控制信号(ALE、START、OE、LOCK)没有毛刺。

方法1:

将输出信号锁存后输出;方法2:

使用状态码直接输出型状态机,并比较这三种状态机的特点。

方法1:

VHDL文件:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYADCINTIS

PORT(D:

INSTD_LOGIC_VECTOR(7DOWNTO0);--来自0809转换好的8位数据

CLK:

INSTD_LOGIC;--状态机工作时钟

EOC:

INSTD_LOGIC;--转换状态指示,低电平表示正在转换

ALE:

OUTSTD_LOGIC;--8个模拟信号通道地址锁存信号

START:

OUTSTD_LOGIC;--转换开始信号

OE:

OUTSTD_LOGIC;--数据输出三态控制信号

ADDA:

OUTSTD_LOGIC;--信号通道最低位控制信号

LOCK0:

OUTSTD_LOGIC;--观察数据锁存时钟

Q:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));--8位数据输出

ENDADCINT;

ARCHITECTUREbehavOFADCINTIS

TYPEstatesIS(st0,st1,St2,st3,st4);--定义各状态子类型

SIGNALcurrent_state,next_state:

states:

=st0;

SIGNALREGL:

STD_LOGIC_VECTOR(7DOWNTO0);

SIGNALLOCK:

STD_LOGIC;--转换后数据输出锁存时钟信号

SIGNALALE0:

STD_LOGIC;--8个模拟信号通道地址锁存信号

SIGNALSTART0:

STD_LOGIC;--转换开始信号

SIGNALOE0:

STD_LOGIC;--数据输出三态控制信号

BEGIN

ADDA<='1';--当ADDA<='0',模拟信号进入通道IN0;当ADDA<='1',则进入通道INI

Q<=REGL;--LOCK0<=LOCK;

COM:

PROCESS(current_state,EOC,CLK)BEGIN--规定各状态转换方式

CASEcurrent_stateIS

WHENst0=>ALE0<='0';START0<='0';LOCK<='0';OE0<='0';

next_state<=st1;--0809初始化

WHENst1=>ALE0<='1';START0<='1';LOCK<='0';OE0<='0';

next_state<=st2;--启动采样

WHENst2=>ALE0<='0';START0<='0';LOCK<='0';OE0<='0';

IF(EOC='1')THENnext_state<=st3;--EOC=1表明转换结束

ELSEnext_state<=st2;ENDIF;--转换未结束,继续等待

WHENst3=>ALE0<='0';START0<='0';LOCK<='0';OE0<='1';

next_state<=st4;--开启OE,输出转换好的数据

WHENst4=>ALE0<='0';START0<='0';LOCK<='1';OE0<='1';next_state<=st0;

WHENOTHERS=>next_state<=st0;

ENDCASE;

IFCLK'EVENTANDCLK='1'THEN

ALE<=ALE0;START<=START0;LOCK0<=LOCK;OE<=OE0;--方法1:

信号锁存后输出

ENDIF;

ENDPROCESSCOM;

REG:

PROCESS(CLK)

BEGIN

IF(CLK'EVENTANDCLK='1')THENcurrent_state<=next_state;ENDIF;

ENDPROCESSREG;--由信号current_state将当前状态值带出此进程:

REG

LATCH1:

PROCESS(LOCK)--此进程中,在LOCK的上升沿,将转换好的数据锁入

BEGIN

IFLOCK='1'ANDLOCK'EVENTTHENREGL<=D;ENDIF;

ENDPROCESSLATCH1;

ENDbehav;

RTL文件:

方法2:

VHDL程序:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYAD0809IS

PORT(D:

INSTD_LOGIC_VECTOR(7DOWNTO0);

CLK,EOC:

INSTD_LOGIC;

ALE,START,OE,ADDA:

OUTSTD_LOGIC;

c_state:

OUTSTD_LOGIC_VECTOR(4DOWNTO0);

Q:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDAD0809;

ARCHITECTUREbehavOFAD0809IS

SIGNALcurrent_state,next_state:

STD_LOGIC_VECTOR(4DOWNTO0);

CONSTANTst0:

STD_LOGIC_VECTOR(4DOWNTO0):

="00000";

CONSTANTst1:

STD_LOGIC_VECTOR(4DOWNTO0):

="11000";

CONSTANTst2:

STD_LOGIC_VECTOR(4DOWNTO0):

="00001";

CONSTANTst3:

STD_LOGIC_VECTOR(4DOWNTO0):

="00100";

CONSTANTst4:

STD_LOGIC_VECTOR(4DOWNTO0):

="00110";

SIGNALREGL:

STD_LOGIC_VECTOR(7DOWNTO0);

SIGNALLOCK:

STD_LOGIC;

BEGIN

ADDA<='1';Q<=REGL;START<=current_state(4);ALE<=current_state(3);

OE<=current_state

(2);LOCK<=current_state

(1);c_state<=current_state;

COM:

PROCESS(current_state,EOC)BEGIN--规定各状态转换方式

CASEcurrent_stateIS

WHENst0=>next_state<=st1;--0809初始化

WHENst1=>next_state<=st2;--启动采样

WHENst2=>IF(EOC='1')THENnext_state<=st3;--EOC=1表明转换结束

ELSEnext_state<=st2;--转换未结束,继续等待

ENDIF;

WHENst3=>next_state<=st4;--开启OE,输出转换好的数据

WHENst4=>next_state<=st0;

WHENOTHERS=>next_state<=st0;

ENDCASE;

ENDPROCESSCOM;

REG:

PROCESS(CLK)

BEGIN

IF(CLK'EVENTANDCLK='1')THENcurrent_state<=next_state;

ENDIF;

ENDPROCESSREG;--由信号current_state将当前状态值带出此进程:

REG

LATCH1:

PROCESS(LOCK)--此进程中,在LOCK的上升沿,将转换好的数据锁入

BEGIN

IFLOCK='1'ANDLOCK'EVENTTHENREGL<=D;

ENDIF;

ENDPROCESSLATCH1;

ENDbehav;

RTL:

对比分析:

方法2使用的状态机占用资源最少。

实验与设计

8-3数据采集电路和简易存储示波器

(3)实验内容1:

设ADDA=‘1’;即模拟信号来自0809的IN1口(可用实验系统的电位器产生被测模拟信号)完成此项设计,给出仿真波形及其分析,将设计结果在Cyclone中硬件实现,用QuartusⅡ在系统RAM/ROM数据编辑器了解锁入RAM中的数据。

元件ADCINT的VHDL描述:

libraryieee;

useieee.std_logic_1164.all;

entityADCINTis

port(D:

instd_logic_vector(7downto0);

CLK:

instd_logic;

EOC:

instd_logic;

ALE:

outstd_logic;

START:

outstd_logic;

OE:

outstd_logic;

ADDA:

outstd_logic;

LOCK0:

outstd_logic;

Q:

outstd_logic_vector(7downto0));

endADCINT;

ARCHITECTUREbehavOFADCINTIS

TYPEstatesIS(st0,st1,st2,st3,st4);

SIGNALcurrent_state,next_state:

states:

=st0;

SIGNALREGL:

STD_LOGIC_VECTOR(7DOWNTO0);

SIGNALLOCK:

STD_LOGIC;

BEGIN

ADDA<='1';--当ADDA<='0',模拟信号进入通道IN0;当ADDA<='1',则进入通道IN1

Q<=REGL;LOCK0<=LOCK;

COM:

PROCESS(current_state,EOC)BEGIN--规定各状态转换方式

CASEcurrent_stateIS

WHENst0=>ALE<='0';START<='0';LOCK<='0';OE<='0';next_state<=st1;--0809初始化

WHENst1=>ALE<='1';START<='1';LOCK<='0';OE<='0';next_state<=st2;--启动采样

WHENst2=>ALE<='0';START<='0';LOCK<='0';OE<='0';

IF(EOC='1')THENnext_state<=st3;--EOC=1表明转换结束

ELSEnext_state<=st2;ENDIF;--转换未结束,继续等待

WHENst3=>ALE<='0';START<='0';LOCK<='0';OE<='1';next_state<=st4;--开启OE,输出转换好的数据

WHENst4=>ALE<='0';START<='0';LOCK<='1';OE<='1';next_state<=st0;

WHENOTHERS=>next_state<=st0;

ENDCASE;

ENDPROCESSCOM;

REG:

PROCESS(CLK)

BEGIN

IF(CLK'EVENTANDCLK='1')THENcurrent_state<=next_state;ENDIF;

ENDPROCESSREG;--由信号current_state将当前状态值带出此进程:

REG

LATCH1:

PROCESS(LOCK)--此进程中,在LOCK的上升沿,将转换好的数据锁入

BEGIN

IFLOCK='1'ANDLOCK'EVENTTHENREGL<=D;ENDIF;

ENDPROCESSLATCH1;

ENDbehav;

CNT10B的VHDL描述:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCNT10BIS

PORT(LOCK0,CLR:

INSTD_LOGIC;

CLK:

INSTD_LOGIC;

WE:

INSTD_LOGIC;

DOUT:

OUTSTD_LOGIC_VECTOR(8DOWNTO0);

CLKOUT:

OUTSTD_LOGIC);

ENDCNT10B;

ARCHITECTUREbehavOFCNT10BIS

SIGNALCQI:

STD_LOGIC_VECTOR(8DOWNTO0);

SIGNALCLK0:

STD_LOGIC;

BEGIN

CLK0<=LOCK0WHENWE='1'ELSE

CLK;

PROCESS(CLK0,CLR,CQI)

BEGIN

IFCLR='1'THENCQI<="000000000";

ELSIFCLK0'EVENTANDCLK0='1'THENCQI<=CQI+1;ENDIF;

ENDPROCESS;

DOUT<=CQI;CLKOUT<=CLK0;

ENDbehav;

ADC0809采样电路系统的原理图及引脚指定图:

波形仿真:

第九章VHDL结构与要素

9-15

用两种方法设计8位比较器,比较器的输入是两个待比较的8位数A=[A7..A0]和B=[B7..B0],输出是D、E、F。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2