数电大作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数电作业
课程名称:数字电子技术基础课程时间:2015年秋
授课教师:康磊
学生姓名:XXX
学生班级:
学生学号:
联系电话:
哈尔滨工业大学英才学院
2015年12月
大作业一
一、设计目的
利用Verilog HDL设计一个电路,使其可以检测输入的一段由二进制数组成的序列,若序列中有连续的三个或者三个以上的1,则电路下一个时钟到来时输出为1,否则为0。状态转换图如图所示。
二、设计步骤
1、安装ISE14.2,并学会如何仿真。
2、根据状态图编写verilog程序。
3、仿真并生成仿真波形图。
4、保存项目并完成报告。
三、程序源代码
1、主程序
`timescale 1ns / 1ps
module shudian1(clk,rst,din,out);
input clk,rst,din;
output out;
reg[2:1] y, Y;
reg out;
parameter A=2'b00,B=2'b01,C=2'b10,D=2'b11;
always @(posedge clk or negedge rst)
begin
if(!rst)y <= A;
elsey <= Y;
end
always@(y or din) begin
case(y)
A: begin
out = 0;
if(din) Y=B;
else Y=A;
end
B: begin
out = 0;
if(din) Y=C;
else Y=A;
end
C: begin
out = 0;
if(din) Y=D;
else Y=A;
end
D: begin
out = 1;
if(din) Y=D;
else Y=A;
end
default:begin
out = 0;
Y = A;
end
endcase
end
endmodule
2、测试程序
`timescale 1ns / 1ps module sudian11;
// Inputs
reg clk;
reg rst;
reg [20:0]data;
assign din=data[20];
// Outputs
wire out;
// Instantiate the Unit Under Test (UUT)
shudian1 uut (
.clk(clk),
.rst(rst),
.din(din),
.out(out)
);
initial
begin
rst = 0;
#200 rst = 1;
end
initial
begin
clk = 0;
end
always
begin
#50 clk=~clk;
end
initial
begin
data=20'b10110111011110101101;
end
always @(posedge clk)
#2 data ={data[19:0],data[20]};
endmodule
四、仿真波形图
将仿真时间设为1.5us,我们可以看到如下波形图。
可以看出,当输入信号有连续的三个或者三个以上的1,则电路输出在下一个时钟到来变为1,否则为0,且电路为Moore型,输出是当前状态的函数。
大作业二
一、设计目的
利用Verilog HDL设计一个电路,使其可以检测输入的一段由二进制数组成的序列,若序列中有连续的三个或者三个以上的1,则电路立刻输出为1,否则为0。状态转换图如图所示。
二、设计步骤
1、根据状态图编写verilog程序。
2、仿真并生成仿真波形图。
3、保存项目并完成报告。
三、程序源代码
1、主程序
`timescale 1ns / 1ps
module shudian2(clk , w , rst , z);
input clk, rst, w;
output z;
reg z;
reg [1:0] y, Y;
parameter A=2'b00, B=2'b01,C=2'b10;
always @ (posedge clk or negedge rst)
begin
if(!rst)
y = A;
else
y <= Y;
end
always @(w or y)
begin
case(y)
A: begin
if(!w)begin
Y = A;
z = 0;
end
else
begin
Y = B;
z = 0;
end
end
B: begin
if(!w)
begin
Y = A;
z = 0;