- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
时序逻辑电路的Verilog_HDL实现实验报告
时序逻辑电路的Verilog HDL实现
实验要求
(1):编写JK触发器、8位数据锁存器、数据寄存器的Verilog HDL程序,并实现其仿真及其测试程序;
(2):在实验箱上设计含异步清零和同步使能的计数器。
(3):进行波形仿真测试后;画出仿真波形。
(4):写出实验心得
二.实验内容:
(1)1.JK触发器的元件符号如图7.14所示,其中J、K是数据输入端,CLR是复位控制输入端,当CLR=0时,触发器的状态被置为0态;CLK是时钟输入端;Q和QN是触发器的两个互补输出端。
JK触发器的状态方程为
Qn+1 =Jn+Qn
JK触发器的verilog HDL程序
module jkff_rs(clk,j,k,q,rs,set);
input clk,j,k,set,rs;
output reg q;
always@(posedge clk,negedge rs,negedge set)
begin if(!rs) q=1b0;
else if(!set) q=1b1;
else case({j,k})
2b00:q=q;
2b01:q=1b0;
2b10:q=1b1;
2b11:q=~q;
default:q=1bx;
endcase
end
endmodule
JK触发器的功能:带异步清0,异步置1(低电平有效)
JK触发器的仿真结果
2.8位数据锁存器锁存器元件符号如图所示。CLR是复位控制输入端,当CLR=0时,8位数据输出Q[7..0]ENA是使能控制输入端,当ENA=1时,锁存器处于工作状态,输出Q[7..0]=D[7..0];ENA=0时,锁存器的状态保持不变。OE是三态输出控制端,当OE=1时,输出为高阻态;OE=0时,锁存器为正常输出状态。
8位数据锁存器的verilog HDL程序
module tt1373(le,oe,q,d);
input le,oe;
input[7:0] d;
output reg[7:0] q;
always @(le,oe,d) begin if((!oe)(le))q=d;
else q=8bz;
end
endmodule
8位数据锁存器的功能:锁存器一次锁存8位数据,功能类似74LS373
8位数据锁存器的仿真结果
3.8位数据寄存器电路的元件符号如图7.18所示,其中CLR是复位控制输入端;LOD是预置控制输入端;S是移位方向控制输入端,当S=1时,是右移移位寄存器,S=0时,是左移移位寄存器;DIR是右移串入输入信号;DIL是左移串入输入信号。
数据寄存器的verilog HDL程序
module reg_w(dout,din,clk,clr);
parameter WIDTH=7;
input clk,clr;
input [WIDTH:0] din;
output reg[WIDTH:0] dout;
always@(posedge clk,posedge clr)
begin if(clr) dout=0;
else dout=din;
end
endmodule
数据寄存器的功能:该8位数据寄存器每次对8位并行输入的数据信号进行同步寄存,且具有异步清零端(clr)
数据寄存器的仿真结果
.8位二进制计数器的元件符号如图7.20所示,CLR是复位控制输入端;ENA是使能控制输入端;LOAD是预置控制输入端;D[7..0]是8位并行数据输入端;UPDOWN是加减控制输入端,当UPDOWN=0时,计数器作加法操作,UPDOWN=1时,计数器作减法操作;COUT是进/借位输出端。
含异步清零和同步使能的计数器的verilog程序
module CNT4B(CLK,RST,ENA,CLK_1,RST_1,ENA_1,OUTY,COUT);
input CLK,RST,ENA;
output CLK_1,RST_1,ENA_1;
output[3:0] OUTY;
output COUT;
reg[3:0] OUTY;
reg COUT;
wire CLK_1;
wire RST_1;
wire ENA_1;
assign CLK_1 = CLK;
assign RST_1 = RST;
assign ENA_1 = ENA;
always@(posedge CLK or negedge RST)
begin if(!RST)
begin OUTY=4b0000;
COUT=1b0;
end
else if(ENA) begin OUTY=OUTY+1b1;
文档评论(0)