做搜索引擎的网站,wordpress comments 时间为什么是utc时间,乐度网上购物网站建设方案,北京集团公司网站建设分别采用结构描述和行为描述方式设计一个基本的D触发器#xff0c;在此基础上#xff0c;采用结构描述的方式#xff0c;用8个D触发器构成一个8位移位寄存器。进行功能仿真#xff0c;查看结果#xff0c;把上述内容整理到实验报告。#xff08;1#xff09;行为描述:单…分别采用结构描述和行为描述方式设计一个基本的D触发器在此基础上采用结构描述的方式用8个D触发器构成一个8位移位寄存器。进行功能仿真查看结果把上述内容整理到实验报告。1行为描述:单个D触发器
功能代码:
module shiyan31(q,d,clk);
input d,clk;
output q;
reg q;
always (posedge clk) %在时钟的每个下降沿
begin
qd;
end
endmodule
测试代码:
timescale 1ns/1ns module test();
reg d,clk;
wire q;
shiyan31 U1(q,d,clk);
always #10 clk~clk;
initial
begin clk 0; %每隔20s输入一个d
#20 d1;
#20 d0;
#20 d1;
#20 d0;
#20 d1;
#20 d0;
#20 d1;
#200 $finish;
end
endmodule 8位D触发的移位寄存器
功能程序
module shiyan31(q,d,clk);
input d,clk;
output q;
wire d;
wire[7:0] q;
D U2(q[0],d,clk); %调用8次Module D,第一个的输入为d,其它输入为上一级的输出
D U3(q[1],q[0],clk);
D U4(q[2],q[1],clk);
D U5(q[3],q[2],clk);
D U6(q[4],q[3],clk);
D U7(q[5],q[4],clk);
D U8(q[6],q[5],clk);
D U9(q[7],q[6],clk);
endmodule module D(q,d,clk);%一个D触发器的module
input d,clk;
output q;
reg q;
always (posedge clk)
begin
qd;
end
endmodule
测试程序
timescale 1ns/1ns
module test();
reg d,clk;
wire[7:0] q;
shiyan31 U1(q,d,clk);
always #10 clk~clk;
initial
begin clk 0;
#10 d1;
#150 d0;
#150 d1;
#900 $stop;
end
endmodule 2结构描述
单个D触发器
功能程序
module shiyan31(clk,d,s,r,q);
input clk,d,s,r;
output q;
wire q1,q2,q3,q4,q0;
nand (q1,s,q4,q2);
nand(q2,q1,r,clk);
nand(q3,q2,clk,q4);
nand(q4,q3,d,r);
nand(q,s,q2,q0);
nand(q0,q,q3,r);
endmodule
测试程序
timescale 1ns/1ns
module test();
reg d,clk,s,r;
wire q;
shiyan31 U1(clk,d,s,r,q);
always #10 clk~clk;
always #30 d~d;
initial
begin clk 0;s1;r1;d0;
#200 $stop;
end
endmodule 8位移位寄存器
功能代码
module shiyan31(Q,d,clk,s,r,reset);
input d,clk,s,r,reset;
output Q;
wire d;
wire[7:0] Q;
wire s,r;
D U2(clk,d,s,r,Q[0]);
D U3(clk,Q[0],s,r,Q[1]);
D U4(clk,Q[1],s,r,Q[2]);
D U5(clk,Q[2],s,r,Q[3]);
D U6(clk,Q[3],s,r,Q[4]);
D U7(clk,Q[4],s,r,Q[5]);
D U8(clk,Q[5],s,r,Q[6]);
D U9(clk,Q[6],s,r,Q[7]);
endmodule module D(clk,d,s,r,q);
input clk,d,s,r;
output q;
wire q1,q2,q3,q4,q0;
nand (q1,s,q4,q2);
nand(q2,q1,r,clk);
nand(q3,q2,clk,q4);
nand(q4,q3,d,r);
nand(q,s,q2,q0);
nand(q0,q,q3,r);
Endmodule 测试代码
timescale 1ns/1ns module test();
reg d,clk,s,r,reset;
wire [7:0] Q;
shiyan31 U1(Q,d,clk,s,r,reset);
always #10 clk~clk;
initial
begin clk 0;s1;r1;reset1;
#10 reset0;
#10 d1;
#150 d0;
#150 d1;
#900 $stop;
end
endmodule 设计1个8位的计数器带同步复位功能复位信号低电平有效。1在同一个module中设计1个4分频器采用分频器输出脉冲作为计数器的输入。2将4分频器设计成独立的module实例化四分频器模块完成与1相同的功能。进行综合和仿真查看功能仿真结果把上述内容整理到实验报告。1计数器:
功能代码
module shiyan32(out,reset,clk);
input clk,reset;
output reg[7:0] out;
always (posedge clk)
begin
if(!reset)
out8h00;%同步置位
else
outout1;%来一个时钟上升沿则加1
end
endmodule
测试代码
timescale 1ns/1ns
module test();
reg reset,clk;
wire[7:0] out;
shiyan32 U1(out,reset,clk);
always #10 clk~clk;
initial
begin clk0;reset0;
#20 reset1;
#100 reset0;
#200 $stop;
end
endmodule 2同一个module 模块
功能程序
module shiyan32(clkout,out,reset,clk);
input clk,reset;
output clkout;
output reg[7:0] out;
reg clkout;
reg [4:0] qout;
always (posedge clk)
begin if(!reset)
begin
clkout0;
qout0;%同步置位,clkout,qout都为0
end
else begin
if(qout1)%当qout为1是表示经历了两个时钟则达到了占空比为50%的四分频
begin
qout 0;
clkout~clkout;
end
else
qout qout1;
end
end
always (posedge clkout or negedge reset) %用分频之后的clk时钟作为计数器的输入时钟
begin
if(!reset)
out8h00;
else
outout1;
end
endmodule
测试程序
timescale 1ns/1ns
module test();
reg reset,clk;
wire[7:0] out;
shiyan32 U1(clkout,out,reset,clk);
always #10 clk~clk;
initial
begin clk0;reset0;%reset0%低电平置位
#20 reset1;
#1000 $stop;
end
Endmodule 3两个module 模块
功能代码
module shiyan32(out,clkout,reset,clk);
input clk,reset;
output reg[7:0] out;
output clkout;
wire clkout;
wire [4:0] qout;
clk4 u1(reset,clk,clkout,qout);%四分频时钟的模块调用在调用的模块中出现的信号可以不出现在主模块中
always (posedge clkout or negedge reset)
begin
if(!reset)
out8h00;
else
outout1;
end
endmodule
module clk4 (reset,clk,clkout,qout);
input reset,clk;
output clkout,qout;
reg clkout;
reg [4:0] qout;
always (posedge clk)
begin if(!reset)
begin clkout0;qout0;end
else begin if(qout1)
begin qout 0; clkout~clkout; end
else qout qout1; end end
Endmodule
测试程序
timescale 1ns/1ns
module test();
reg reset,clk;
wire[7:0] out;
shiyan32 U1(out,clkout,reset,clk);
always #10 clk~clk;
initial
begin clk0;reset0;
#20 reset1;
#400 $stop;
end
endmodule