版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1956
43纾垃之学
数字逻辑设计
课程设计报告书
题目名称:电子密码锁
学院:光电信息学院
小组成员
指导教师
日期:2023年6月28日
一、小组成员分工情况
侯晨涛:所有编程工作、资料查找工作量:60%
钟永捷:辅助编程、图表制作、资料查找工作量:20%
徐昊:论文写作、图表制作、资料查找工作量:20%
二、题目分析
1.输入信号
通过扫描键盘的行与检测键盘的列得到输入信号。
2.输出信号
通过译码器得到的显示器显示信息,开关锁动作。
三、设计总框图
四、各模块说明
(-)键盘扫描模块
1.原理
通过时序信号产生脉冲,不间断地向矩阵键盘的行输入ino-iioi-loii-oiii的循环序列。同时将各
列的电三置高,检测矩阵键盘各列的电平变化。若在一定期间内,扫描到第〃列电平为零时恰好第〃,行的
输入电立也为零,则判断键盘上[见〃]位置上键被按下。
歹U2一O
3123
2456
1789
O*O#
2.模块框图
3.状态表
此模块只需要通过编码器实现即可,假定前I四位表达各行扫描结果,后三位表达各列扫描的结果。
动作行输入列输入状态命名编码输出
为0001,即输出值为1。其它状态依此类推。
(-)输入模块
1.原理
设立两个寄存器,一个作为用户所想设立密码的密码寄存器。另一个寄存器则是将键盘Input的键值
存储起夹。最后通过一个比较器将两个寄存器的值进行比较。若相同则输出“open”,反之,输出“error”。
比较器内部通过多位异或门实现。
2.模块框图
4.仿真结果
1)删除字符
SimulationWaveforms
Smul^txon»od«:Tittiag
MaswTrngBar18.55m448.17usInterval:Uai5us
A124O.*g81.窣稣122,十3163.qni2O4.psus49152us
英tfme1855ns
803elk
至IRst
HOOil
国key.out01010001
□ncorrect
ngmwr
Bnaift.state
日Kxnb«r_5ig0CO3COCOXO0OTCO3COCO300OCOJCOOOJCOOaDCODOOCOlO]D0CO3COCO3CO0OTCO9110101OCOOWCOOOJCOQOIOOI10101
国Input#OOC颂OOPMOPOCOJOOCSO
SimulationWaveforms
Simulationmodo:Timing
第一次输入值为0101,Number_sig第0到3位将其保存。第二次输入值为OOH,Number_sig第
4到7位将其保存。第三次输入值为0001,Numbejsig第8到11位将其保存。第四次输入值为1010,
即删除键。第五次输入值为0111,Numbejsig第8到11位的值由0001变为0111,即实现了删除功
能。
2)密码输入对的
SimulationWaveforms
SmulationnodeTinine
Q
A
英
做
总
代
T
外
Correct=l说明密码输入对的,Numbejsig的值为,Nunibejsig的值通过七段显示译码器之后将
使数码管显示OPEnOO。
3)密码输入错误
SimulationWaveforms
Sinulationnodo:Timing
MasterTime8卷:1855nsJJPcrter7268gInteivat72,68u$Start:
4096us81.平us122.芦uz163甲s204,8“245.76s286J2uz
1855ns
Rst
□key.nen
国key.out
correct
error
Smain_state
SNsber一sigB
SInputpdB•
Correct=l说明密码输入店的,Numbejsig的值为,Nunibejsig的值通过七段显示译码器之后将
使数码管显示ERROROo
(三)密码判断及更改
1.原理
密码判断模块:通过比较器将输入寄存相与存储寄存器中的数据进行比较,假如数据相同,则判断密
码走的。假如数据不同,则返回输入等待状态,并对输入寄存器中的数据清零。
密码更改模块:将第一次与第二次输入寄存器中的数据输入比较器比较,假如数据相同则将该数据输入进
密码存储寄存器中。假如数据不同,则返回数据输入前的数据等待状态。
2.模块框图
3.仿真结果
SimulationWaveforms
Sinulftlionnode:Timing
5MasterTmeBar16425ns<|»|Porter44516u;Intefvdt44514usStartErd:
A8192u£122.88us1B3d4u22048us245.76us286.72^ui327Mus388&4us409.6us
关
Rzt
i»am-st»te
Inputpd
key-out
correct
main_state为10000即update状态,按键六次输入值为0110,0110,0110,0110,0110,0010,第二次输
入相同。即将密码由666666改为266666。第二次输入完毕same为1,说明两次输入相同。按“#"键确
认后。当状态变为01000时,即in_put输入密码Inputpd为即266666,correct为1说明密码修改成功
并开锁。
(四)主状态机
1.原理
状态分五个状态:Waits,Input,Pass,Update,Forbido
在Waits状态下,下下进入密码“Input”状态,在“Input”状态下掘可删除当前Input
的字符。若密码输入对的则进去“Pass”状态,否则进入“Forbid”状态,这时若撼下“#”键,则重新
返回“gits”状态。掘下“*”键进入“Update”状态,输入两次密码然后握键进行拟定,若两次
密码不相同则Update失败,重新返回到“Pass”状态。若两次密码相同,则返回到“Waits”状态。
2模块框图
3.状态表
当前状态Key_scan
#*Right
S
0001101110
WaitsWaitsWaitsin_putWaitsDD
in_putin_putin_putin_putin_putPassForbid
PassPassUpdatePassPassDD
ForbidForbidForbidWaitsForbidDD
UpdateUpdateUpdateUpdateUpdateRight1D
Right1UpdateUpdateUpdateUpdateRight2Error
Right2UpdateUpdateWaitsUpdateDD
ErrorDDPassDDD
S*
4.仿真结果
1)密码输入错误
按卜一键,进行密码输入(main_state由00001变为01000),此时error为1说明密码输入错误。
main_state变为forbid状态(由01000变为00100)。再按下键,重新返回waits状态(由00100
变为00001)。
2)密码输入对的,且修改密码成功
SimdationWaveforms■
SifrixxLicod,:T&ni
A
英
躲
按下键,进行密码输入(main_state由00001变为01000),此时correct为1说明密码输入对
的。由in_put变为pass(由01000变为00010)。按下进行密码修改,由00010变为10000修改对
的,主状态重新返为wait。
3)密码输入对的,但密码修改失败
SimuktionWaveforms
Sinulttionnod«:Timing
却
按下键,进行密码输入(main_state由00001变为01000),此时correct为1说明密码输入对
的。由in_put变为pass(由01000变为00010)。按下进行密码修改,由00010变为00010主状态
由修改错误重新返为passo
(五)显示
1.原理
这县的选择24位数码管控制模块,将24位拆分为六组四位编码输入七段译码器。将译码输出与扫描
模块产生的扫描时序共同作用于六位数码管。得到所需显示结果。
2.模块框图
八年如人xirn^^im
数码管控制r--<-
七段译码器
模块六位数码管
1工抗汨班大二I十常
扫描模块
(24位)
3.仿真结果
Q
A
美
乳
电
幽
&
T
密
输入信号Number_sig的值为即123456,Scansig的值为011111时,即第一个数码管亮时Duandate
的值为0110000即数码管显示数字为1。综合以上,此时第一个数码管显示为1,之后第二个数码管显示
为2,第三个数码管显示为3……
五、验证方案
采月自上而下的设计方案,一方面将题目规定拆提成各大模块,然后通过编写Verilog语言的程序实
现各模块的功能。在quatus2中仿真出时序逻辑图,并验证程序的对的性。
MMimpfecn
■EH哩6!U:F1
>ww.wgp3q
rMXCJ,
明.F:a
叫M^q
M<T»CT
*5a,5q
MJW.MC3,
nr.H,q三m
电.M3,
耽”;
xcrva
iny
OOOQ1U02y&5守"'y\urv
Unqy¥”
。了工
C^TUF2r811)tOKS\--\
二二:,OKS谏
7T7TTIESZ33S1
WJ卜,,K:05;
b]蚪5sMj
F
fJ5fil&ar/!简
键,
图1.设计总框图的实现
六、课程设计心得体会
通过这次数字密码锁的课程设计,我们掌握了如何通过数字逻辑知识来设计一个可应用于生产生活中
的拥有实际应用功能的数字逻辑器件。一方面我们要了解其具体功能规定,然后采用自上而下的设计方法,
建立整体逻辑框图并将其划分为各个具体功能模块。之后,我们通过编写Verilog程序实现每一模块的功
能。在编译无错误后,通过quartus2软件自带的波形仿真功能检测模块功能是否实现。当波形达成规定,
将各模块拼接,得到最终的密码锁整体逻辑结构(如图1)。
在讨论课程设计时,我们最初想通过简朴的逻辑门和逻辑器件来实现密码锁功能,以简化程序部分。
但是由于状态之间转换的复杂性,无法实现。之后我们决定每一功能模块均通过程序来实现,并自动生成
状态图及逻辑图。这样工作的任务所有转移到编程上。
编程的感想:对于编程,我想说从对vcrilog一窍不通(C也不太会)到能独立地使用其进行编程,
这将近一月的时间里,我学会了很多,一开始面对这个题目,完全不知道从何下手,从图书馆借了一本书
就开始慢慢看,然后就尝试着去写,有时候一个简朴的错误困扰了我整整一天甚至两天都想不出来。这个
题目的程序是我这将近一个月的心血,每一行都是通过思考后写下的。通过这次课程设计,我体会到了编
程的乐趣,当你长时间困扰在一个问题上,忽然间的一个奇思妙想就可以解决问题或者实现一个以前实现
不了的功能,就是这种偶尔的惊喜使得我坚持了下来。这次课程设计美中局限性的是,虽然各个模块都可
以实现其功能,但是将其和在一起就会有问题,虽然编译无错误,但是功能无法实现。由于时间因素,无
法对其进行修正,这是我的一个遗憾。
程序编写的同时我们进行状态表的绘制,不同于软件仿真出的状态表,我们将状态简化绘制表格,只
体现编程时的大体思绪。在这个过程中,我们纯熟掌握了如何将抽象的状态变化绘制成状态转移表。以及
简朴状态图的绘制方法。
七、源文献(详见附件)
源代码:
top.V〃顶层文献
51c51c51c5|c51c51c51c51c51c51c51c51c51c51c51c51cJ{C?|c51c51c51c51c51c?|c5!c51c51c*|c5Jcrjc51c51c51c51c?|c5101c5Jc5|c51c5|c51c5Jc51c51c
moduletop(elk,Rst,kcy_out,Duandate,Scansig);
inputelk;
inputRst;
input[3:0]key_out;
output[6:0]Duandate;
output[5:0]Scansig;
wire[3:0]scan;
wire[2:0]key_in;
wire[2:0]key_mem;
wirecorrect;
wireerror;
wiresame;
wire[4:0]mainstate;
wire[23:0]Numbersig;
wire[23:0]Inputpd;
main_state_machineMl
(
.clk(clk),
.Rst(Rst),
.keyout(key_out),
.correct(correct),
.error(error),
.sane(same),
.mam_statc(main_statc),
.keymem(keymem)
);
keyscanM2
(
.clk(clk),
.Rsl(Rst),
.keyin(key_in),
.scan(scan),
.keyout(key_out),
.keymem(key_mem)
);
In_putM3
(
.clk(clk),
.Rst(Rst),
.keyout(key_out),
.keymem(keymem),
.correct(correct),
.error(error),
.mam_statc(main_statc),
.Nunbersig(Number_sig),
.Inputpd(Inputpd)
);
passwdcomM4
(
.elk(elk),
.Rst(Rst),
.key_out(key_out),
.Inputpd(Inputpd),
.manstate(mainstate),
.keymem(key_mem),
.correct(correct),
.error(error),
.sane(same)
);
topledM5
(
.elk(elk),
.Rst(Rst),
.Nunber_sig(Number_sig),
.Duan_date(Duan_date),
.Scan_sig(Scan_sig)
);
cndmodulc
wx
d、4、,,、,「4、*1、,.、4、*1、,「,卜V、*1、,i、,,、,A、*<**J、,广,卜4、4、,j、,4、,,、(、*1、,A、/「*/»”、,j、,「,4、V、*,*,A、,「,,、«、*1、,1、,卜*T、,j、,,、,卜*\>*J、,「'卜V、"、,|、,,、,4、(、*1、,卜,卜,4、*,**J、,广,卜«、*1、,|、,,、,4、«、*1、,「/卜V、乙、,j、,,、,,、«、*1、,A、,卜«、,j、,「
Key_scan.v〃键盘扫描
、1,*1*、1"♦I*'*1,、1,、],*2;*、1,、1,KW\[,、1,、]■、1,4,*1*、1,、1,«A»、[■、1,■>1*、1,、,■、<1*、[,«A«、]■、1,«x»\[■
modulekeyscan(elk,scan,keyin,keyout,keymem,Rst);
inputelk;
inputRst;
input[2:0]key_in;
output[3:0]scan;
output[3:0]key_out;
output[2:0]kcymcm;
reg[3:0]scan;
reg[3:0]key_out;
reg[31:0]counter;
reg_20clk;
reg[1:0]Q;
reg[2:0]keyjnem;
always@(posedgeelkornegedgeRst)
ifCRst)
begin
counter<=0;
end
else
begin
counter<=counter+l'bl;
if(counter==12500)
begin
counter<=0;
20cIk<-20clk;
end
end
always@(posedgc_20clk)
begn
Q<=Q+1'bl;
end
always@(posedgeelkornegedgeRst)
begin
if(!Rst)
key_mem<=3'bill;
else
casc(Q)
2'bOO:
begin
scan=4'bl110;
case(kcy_in)
34)110:
begin
key_out<=4'dl;
key_mem<=3>bl10;
end
3'bl01:
begin
key_out<=4'd2;
key_mem<=3'bl01;
end
3'bOll:
begin
key_out<=4'd3;
keyjnem<=3'bOll;
end
default:key_out<=4'dz;
endcase
end
2'b01:
begin
scan=4'bl101;
case(key_in)
3'bllO:
begin
key_out<=4'd4;
keymem<=3'bl10;
end
3'bl01:
begin
key_out<=4'd5;
key_mem<=3'bl01;
end
3'b011:
begin
key_out<=4'd6;
kcy_mcm<=3'b011;
end
default:key_out<=4'dz;
endcase
end
2'blO:
begin
scan=4'blOl1;
case(key_in)
31bll0:
begin
key_out<=4'd7;
key_mem<=3'bl10;
end
3'bl01:
begin
key_out<=4'd8;
keyjnem<=3'bl01;
end
3'b011:
begin
key_out<=4'd9;
key_mcm<=3>bOll;
end
default:key_out<=4'dz;
endcase
end
2,bll:
begin
scan二4'bOl11;
case(key_in)
3,bllO:key_out<=4'diO;
3'bl01:
begin
key_out<=4'dO;
key_mem<=3>blOl;
end
3'b011:keyout<=4'dll;
default:key_out<=4'dz;
endcase
end
endcase
encl
cndmodulc
wx«JxWXwx
*C^*1**7**T**T*^r**?**^**T**r**T**1^*T**j*****T**1**T**T**T**T*^f**»^*T**T**7**t**T**f**J**i**T**T^*T**7**T**r*^T**T**j**T**T**7**T**7**T**T**7**J**i**1^*f**T**T**i**f*^J**T**7*
In_put.v〃输入
«2x«2x^lx^tz«£z«Zx*1x^1*xlz*Xxvl*^txs£z*£x*lx>1*xlz«lx*X*、1*%tz«Zx«£zxlx♦>«Az>1x^1*v^*«2x«2x、J*%*z«/xxlxK1*xlz«Xx*£*%t*«*z*£x*£x*1*.1*%tz«2x«lxxlx■>«Az«/z^lxvl*K^Z«JX、1*%*zs2x«ixvl*xlz«Xx>1^^1*vjxs£x«lx*1*♦!*y-vt^vl*«2x*X*xlx
4、q、,.、,「4、*!**.*,,、匕、q、,.、,,、4、4、,,、,,、4、*T*,5,,、4、*•*,「,「4、*!**•*,,、4、*•*,,、,「4、*•*,卜,.、^t*4、,,、4、4、,广,>4、4、,i、,广,「4、4、,卜,,、4、,,、,「4、,A、,卜,.、4、'A、’〉4、*•*,广,,、*?*,「*?*,,、4、,i、,「
moduleIn_put(elk,Rst,key_mem,Number_sig,key_out,Inputpd,correct,error,main_state);
inputelk;
inputRst;
input[3:0]key_out;
input[2:0]key_mem;
inputcorrect;
inputerror;
input[4:0]main_state;
output[23:0]Number_sig;〃数码管显示数据
output[23:0]Inputpd;
reg[23:0]Number_sig;
reg[23:0]Tnputpd;
reg[5:0]cur_state;
reg[5:0]next_state;
parameterfirst=6'bOOO001,
second=6*b000_010,
third=6'b000_100,
fourth=6'b001000,
fifth=6*b010_000,
sixth=6'bl00_000,
finish=6Jblll_lll;
parameter[4:0]waits=5*bOOOOl,
pass=5*bOOOlO,
forbid=5,bOOlOO,
in_put=5*bOlOOO,
update=5*blOOOO;
always@(poscdgeelkornegedgeRst)
begin
ifCRst)
cur_state<=first;
else
curslate<-nextsLaie;
end
regKH2L_f1;〃检测按键电平
regKH2L_gl;
regKH2L_f2;
regKII2L_g2;
regKH2L_f3;
regKH2L_g3;
wireH2L_sigl;
wireI12L_sig2;
wireH2L_sig3;
always@(poscdgcelkornegedgeRst)
ifCRst)
begin
KH2L_fl<=1'bl;
KH2L_gl<=fbl;
KH2L_f2<=1'bl;
KH2L_g2<=1'bl;
KI12L_f3<=1'bl;
KH2L_g3<=fbl;
end
else
begin
KH2L_f1<=keymem[O];
KH2L_gl<=KH2L_f1;
K112L_f2<=key_mem[l];
KH2L_g2<=KH2L_f2;
KH2L_f3<=key^mem[2];
KH2L_g3<=KH2L_f3;
end
assignH2L_sigl=(KH2L_gl&(!KH2L_fl))?Tbl:l'bO;
assignH2L_sig2=(KH2L_g2&(!KlI2L_f2))?l'bl:l'bO;
assignH2L_sig3=(KH2L_g3&(!KH2L_f3))?l'bl:l'bO;
always@(poscdgcelkornegedgeRst)
begin
ifCRst)
Number_sig<=24*b0000_0000_0000_0000_0000_0000;
elseif(main_state==in_put)
begn
if(correct==1)
Number_sig<=24*b0000_l100_l101_l110_0000_0000;
elseif(error==1)
Number_sig<-244)110111111111000011110000;
elseif(error==0&&correct==0)
case(curstate)
first:
if((H2L_sigl||H2L_sig2||H2L_sig3)&&(key_out==4'dlO))
next_state<=first;
elseif((H2L_sigl|H2L_sig2||H2L_sig3)&&(key.out!=4'dlO))
begin
Number_sig[3:0]<=key_out;
ncxt_state<=second;
end
else
next_state<=first;
second:
if((H2L_sigl||H2L_sig2||H2L_sig3)&&(key_out==4'dlO))
next_state<=first;
elseif((H2L_sigl||H2L_sig2||H2L_sig3)&&(key_out!=4'dlO))
begin
Number_sig[7:4]<=key_out;
next_state<=third;
end
else
next_state<=second;
third
if((H2L_sigl||H2L_sig2||H2L_sig3)&&(key_out==4'dlO))
nextstate<=second;
elseif((H2L_sigl|H2L_sig2||H2L_sig3)&&(key_out!=4'dl0))
begin
Numbersig[11:8]<=keyout;
nextstate<=fourth;
end
else
next_state<=third;
fourth:
if((H2L_sigl||H2L_sig2||H2L_sig3)&&(key_out==4'dlO))
next_state<=third;
elseif((H2L_sigl|H2L_sig2||H2L_sig3)&&(key_out!=4'dlO))
begin
Number_sig[15:12]<=key_out;
next_state<=fifth;
end
else
next_state<=fourth;
fifth:
if((H2L_sigl||H2L_sig2||H2L_sig3)&&(key_out==4'dlO))
next_state<=fourth;
elseif((II2L_sigl|H2L_sig2||H2L_sig3)&&(key_out!=4'dlO))
begin
Number_sig[19:16]<=keyout;
next_state<=sixth;
end
else
nextstate<=fifth;
sixth:
if((H2L_sigl||H2L_sig2||H2L_sig3)&&(key_out==4'dlO))
next_state<=fifth;
elseif((H2L_sigl|H2L_sig2||H2L_sig3)&&(key.out!=4'dlO))
begin
Number_sig[23:20]<=key_out;
nextstate<=finish;
end
else
next_state<=sixth;
finish:
if((H2L_sigl||H2L_sig2||H2L_sig3)&&(key_out==4,dl0))
next_state<=sixth;
else
nextstate<=finish;
defaultnext_state<=first;
endcase
end
end
always@(poscdgcelkornegedgeRst)
ifCRst)
Inputpd=0;
elseif(cur_state==finish)
Inputpd=Numbcr_sig;
endmodule
51c51c5101c5Jc5|c51c51c51c51c51cj|c5J*5|c51c5^C5^o|c*|c51c51c51c*|c51c51c?|c51c51c^jC?!c51c51c?|c5|o|c5J*5|c51c51c*|c51c5jc5J*rjc*|cr|c51c5J*r{C?|c51c51cr|c5^o|c5Jc5^C?|c51cj|c*|c?|c51c51c5^j|c5|c
Led_encode.v〃数码管加码
»1/*1^*1**1**1**1«*1^*1*»1**1**1**1^*1**1**1*
■「,T、*T»,广".、■「,T、,7、,.、,,、■[、,T、■]、*T*,T、*T*■,、•.、■[、*T*,1、,.、,,、*T**T*■,、*T**T**T**T*W、,「,[、*T*■‘、".、,「*T*,]、,.、,,、•[、*T**T**r*,r*T**T*•,、,|、,[、■T、,,、W、■,、,T、*T*,,、*T*吓、•[、*T*•0、,「*T**T*■,、•.、*,**T**T*■.、*T**T*,T、,7、•.、■「,T、*1*j、•.、■[、*T**T**T**>*,T、*T*
moduleledencode(elk,Rst,Numberdate,Duandate);
inputelk;
inputRst;
input[3:0]Number_date;
output[6:0]Duandate;
parameter0=7*bllll_110,
17'b0110000,
_2=7'bll01」01,
3二7'bllU001,
_4=7'b0110011,
_5=7'bl011_011,
_6=
7二7'bl110000,
_8=7'bl111」11,
_9=
_p=7'bl100」11,
_e=T^lOOl111,
_n=7'bl110」10,
_r=7'blll0」ll;
reg[6:0]rDuan;
always@(poscdgeelkornegedgeRst)
ifCRst)
begin
rDuan<=Tb0000_000;
end
else
case(Number_date)
4,dO:rDuan<=_0;
4'dl:rDuan<=」;
4'd2:rDuan<=_2;
4'd3:rDuan<=,3;
4'd4:rDuan<=4;
4'd5:rDuan<=5;
4'd6:rDuan<=_6;
4'd7:rDuan<=7;
4'd8:rDuan<=8;
4'd9:rDuan<=9;
4'dl2:rDuan<=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 豫东平原某市棕地居民小区土壤重金属污染特征与健康风险的深度剖析
- 谷氨酸与四苯基乙烯衍生物共组装体系的圆偏振发光性能与机制探究
- 调频广播授时:方法解析、关键技术与挑战应对
- 调气消积汤对Lewis肺癌小鼠抑瘤作用及机制探究
- 诺迪康胶囊在慢性肺源性心脏病急性发作期治疗中的疗效与机制探究
- 诱导侧枝循环对动脉粥样硬化兔脑缺血治疗作用的实验探索
- 语用认知视角下英语广告元话语的多维解析与策略构建
- 语料库反馈赋能学术英语写作教学:模式构建与成效探究
- 语境视域下英语经济新闻文本汉译:策略与实践探究
- 词汇能力:英语综合能力大厦的基石
- T/CBMCA 007-2019合成树脂瓦
- 中华人民传染病防治法
- 2025山西万家寨水务控股集团所属企业校园招聘82人笔试参考题库附带答案详解
- 2025年04月中国热带农业科学院香料饮料研究所第一批公开招聘29人(第1号)笔试历年典型考题(历年真题考点)解题思路附带答案详解
- JJF(津)10-2020氯离子含量快速测定仪校准规范
- 个体工商户登记备案申请书
- 2025年重庆轨道交通集团招聘笔试参考题库含答案解析
- 湖南省房屋建筑和市政基础设施工程标准施工招标文件
- T-CUWA 60052-2021 城镇排水管道原位固化修复用内衬软管
- 2023年广西高一学业水平合格性考试化学试卷真题(含答案详解)
- 水力发电设备防腐涂料施工合同
评论
0/150
提交评论