数电大作业

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档