78910作业Word文件下载.docx
- 文档编号:20692813
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:18
- 大小:530.07KB
78910作业Word文件下载.docx
《78910作业Word文件下载.docx》由会员分享,可在线阅读,更多相关《78910作业Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。
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=>
width_byteena_a=>
1,
init_file=>
"
./dataHEX/SDATA.hex"
lpm_hint=>
enable_runtime_mod=yes,instance_name=none"
lpm_type=>
altsyncram"
)
portmap(clock0=>
inclock,address_a=>
address,q_a=>
sub_wire0);
end;
模块二:
useieee.std_logic_unsigned.all;
entitysingtis
port(clk:
instd_logic;
dout:
architecturedaccofsingtis
componentdata_rom
port(address:
instd_logic_vector(5downto0);
outstd_logic_vector(7downto0));
signalQ1:
std_logic_vector(5downto0);
process(clk)
ifclk'
eventandclk='
1'
thenQ1<
=Q1+1;
endif;
endprocess;
u1:
data_romportmap(address=>
Q1,q=>
dout,inclock=>
clk);
对应的RTL文件:
图1RTL文件
正弦波信号发生器仿真结果:
图2正弦波信号发生器仿真结果
实验与设计
7—2.
(1)设计一个8位16进制频率计。
经分析可知,该频率计可分为一个测频率控制信号发生器,一个32位锁存器
(1)测频率控制信号发生器,产生测量频率的控制时序。
其VHDL文件:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYFTCTRLIS
PORT(CLKK:
INSTD_LOGIC;
CNT_EN:
OUTSTD_LOGIC;
RST_CNT:
Load:
OUTSTD_LOGIC);
ENDFTCTRL;
ARCHITECTUREbehavOFFTCTRLIS
SIGNALDiv2CLK:
STD_LOGIC;
BEGIN
PROCESS(CLKK)
IFCLKK'
EVENTANDCLKK='
THEN
Div2CLK<
=NOTDiv2CLK;
ENDIF;
ENDPROCESS;
PROCESS(CLKK,Div2CLK)
BEGIN
IFCLKK='
0'
ANDDiv2CLK='
THENRST_CNT<
='
;
ELSERST_CNT<
Load<
CNT_EN<
=Div2CLK;
ENDbehav;
编译结果,其RTL文件如图:
图3测频率控制信号发生器RTL文件
仿真结果:
图4测频率控制信号发生器仿真结果
(2)32位锁存器
其VHDL程序如下:
ENTITYREG32BIS
PORT(LK:
DIN:
INSTD_LOGIC_VECTOR(31DOWNTO0);
DOUT:
OUTSTD_LOGIC_VECTOR(31DOWNTO0));
ENDREG32B;
ARCHITECTUREbehavOFREG32BIS
PROCESS(LK,DIN)
IFLK'
EVENTANDLK='
THENDOUT<
=DIN;
运行结果的RTL文件如图:
图532位锁存器RTL文件
图632位锁存器仿真结果
(3)计数器
ENTITYCOUNTER32BIS
PORT(FIN:
CLR:
ENABL:
DOUT:
ENDCOUNTER32B;
ARCHITECTUREbehavOFCOUNTER32BIS
SIGNALCQI:
STD_LOGIC_VECTOR(31DOWNTO0);
PROCESS(FIN,CLR,ENABL)
IFCLR='
THENCQI<
=(OTHERS=>
'
);
ELSIFFIN'
EVENTANDFIN='
THEN
IFENABL='
=CQI+1;
DOUT<
=CQI;
图7计数器的RTL文件
图8计数器的仿真结果
根据
(1)、
(2)、(3),综合所得8位十六进制频率计:
LIBRARYieee;
USEieee.std_logic_1164.all;
LIBRARYwork;
ENTITYpinlvji_8IS
PORT
(
CLK:
INSTD_LOGIC;
FIN:
DOUT:
OUTSTD_LOGIC_VECTOR(31DOWNTO0)
);
ENDpinlvji_8;
ARCHITECTUREbdf_typeOFpinlvji_8IS
COMPONENTcounter32b
PORT(FIN:
CLR:
ENABL:
ENDCOMPONENT;
COMPONENTftctrl
PORT(CLKK:
CNT_EN:
OUTSTD_LOGIC;
RST_CNT:
Load:
OUTSTD_LOGIC
COMPONENTreg32b
PORT(LK:
DIN:
INSTD_LOGIC_VECTOR(31DOWNTO0);
SIGNALSYNTHESIZED_WIRE_0:
STD_LOGIC;
SIGNALSYNTHESIZED_WIRE_1:
SIGNALSYNTHESIZED_WIRE_2:
SIGNALSYNTHESIZED_WIRE_3:
STD_LOGIC_VECTOR(31DOWNTO0);
b2v_inst:
counter32b
PORTMAP(FIN=>
FIN,
CLR=>
SYNTHESIZED_WIRE_0,
ENABL=>
SYNTHESIZED_WIRE_1,
DOUT=>
SYNTHESIZED_WIRE_3);
b2v_inst1:
ftctrl
PORTMAP(CLKK=>
CLK,
CNT_EN=>
RST_CNT=>
Load=>
SYNTHESIZED_WIRE_2);
b2v_inst2:
reg32b
PORTMAP(LK=>
SYNTHESIZED_WIRE_2,
DIN=>
SYNTHESIZED_WIRE_3,
DOUT);
ENDbdf_type;
RTL文件:
图98位十六进制频率计RTL文件
图108位十六进制频率计仿真结果
第八章作业
8—5.在不改变原代码功能的条件下用两种方法改写例8-2,使其输出的控制信号(ALE、START、OE、LOCK)没有毛刺。
方法1:
将输出信号锁存后输出;
方法2:
使用状态码直接输出型状态机,并比较这三种状态机的特点。
方法一:
将输出信号锁存后输出
VHDL文件:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYADCINTIS
PORT(D:
INSTD_LOGIC_VECTOR(7DOWNTO0);
--来自0809转换好的8位数据
CLK:
--状态机工作时钟
EOC:
--转换状态指示,低电平表示正在转换
ALE:
--8个模拟信号通道地址锁存信号
START:
--转换开始信号
OE:
--数据输出三态控制信号
ADDA:
--信号通道最低位控制信号
LOCK0:
--观察数据锁存时钟
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:
--转换后数据输出锁存时钟信号
SIGNALALE0:
SIGNALSTART0:
SIGNALOE0:
BEGIN
ADDA<
--当ADDA<
,模拟信号进入通道IN0;
当ADDA<
,则进入通道INI
Q<
=REGL;
--LOCK0<
=LOCK;
COM:
PROCESS(current_state,EOC,CLK)BEGIN--规定各状态转换方式
CASEcurrent_stateIS
WHENst0=>
ALE0<
START0<
LOCK<
OE0<
next_state<
=st1;
--0809初始化
WHENst1=>
=st2;
--启动采样
WHENst2=>
OE0<
IF(EOC='
)THENnext_state<
=st3;
--EOC=1表明转换结束
ELSEnext_state<
=st2;
ENDIF;
--转换未结束,继续等待
WHENst3=>
=st4;
--开启OE,输出转换好的数据
WHENst4=>
next_state<
WHENOTHERS=>
ENDCASE;
IFCLK'
EVENTANDCLK='
THEN
ALE<
=ALE0;
START<
=START0;
LOCK0<
OE<
=OE0;
--方法1:
信号锁存后输出
ENDPROCESSCOM;
REG:
PROCESS(CLK)
IF(CLK'
EVENTANDCLK='
)THENcurrent_state<
=next_state;
ENDPROCESSREG;
--由信号current_state将当前状态值带出此进程:
REG
LATCH1:
PROCESS(LOCK)--此进程中,在LOCK的上升沿,将转换好的数据锁入
IFLOCK='
ANDLOCK'
EVENTTHENREGL<
=D;
ENDPROCESSLATCH1;
该程序的RTL文件:
图11方法一的RTL文件
方法二:
使用状态码直接输出型状态机。
ENTITYAD0809IS
PORT(D:
CLK,EOC:
ALE,START,OE,ADDA:
c_state:
OUTSTD_LOGIC_VECTOR(4DOWNTO0);
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDAD0809;
ARCHITECTUREbehavOFAD0809IS
STD_LOGIC_VECTOR(4DOWNTO0);
CONSTANTst0:
STD_LOGIC_VECTOR(4DOWNTO0):
="
00000"
CONSTANTst1:
11000"
CONSTANTst2:
00001"
CONSTANTst3:
00100"
CONSTANTst4:
00110"
Q<
=current_state(4);
ALE<
=current_state(3);
OE<
=current_state
(2);
=current_state
(1);
c_state<
=current_state;
PROCESS(current_state,EOC)BEGIN--规定各状态转换方式
--启动采样
--EOC=1表明转换结束
--开启OE,输出转换好的数据
PROCESS(CLK)
IF(CLK'
PROCESS(LOCK)--此进程中,在LOCK的上升沿,将转换好的数据锁入
图12方法二的RTL文件
图13方法二对应的RTL文件
图14方法二仿真结果
8—1.(4)将8位待测预置数作为外部输入信号,即可以随时改变序列检测器中的比较数据。
写出此程序的符号化单进程有限状态机。
程序设计如下:
ENTITYSCHK2IS
PORT(DIN,CLK,CLR:
SHR:
AB:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDENTITYSCHK2;
ARCHITECTUREbehavOFSCHK2IS
SIGNALQ:
INTEGERRANGE0TO8;
SIGNALD:
D<
=SHR;
PROCESS(CLK,CLR)
IFCLR='
THENQ<
=0;
ELSIFCLK'
CASEQIS
WHEN0=>
IFDIN=D(7)THENQ<
=1;
ELSEQ<
WHEN1=>
IFDIN=D(6)THENQ<
=2;
WHEN2=>
IFDIN=D(5)THENQ<
=3;
WHEN3=>
IFDIN=D(4)THENQ<
=4;
WHEN4=>
IFDIN=D(3)THENQ<
=5;
WHEN5=>
IFDIN=D
(2)THENQ<
=6;
WHEN6=>
IFDIN=D
(1)THENQ<
=7;
WHEN7=>
IFDIN=D(0)THENQ<
=8;
ENDPROCESS;
PROCESS(Q)
IFQ=8THENAB<
1010"
ELSEAB<
1011"
ENDARCHITECTUREbehav;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 78910 作业