基于FPGA的数字系统设计 作业一

发布 2022-09-03 11:46:28 阅读 6856

一、行为描述设计。

采用行为描述风格分别完成所给的三种同步器电路的设计,设计平台选择quartus prime standard 17.1。经过综合以后,所得的门级电路分别如图1中的(a)、(b)、(c)所示。

a)b)

c)图1 经平台综合后所给出的三种同步器的门级电路。

二、功能**。

编写测试文件,通过modelsim-altera**平台对设计得到的电路进行行为级**。所得结果分别如图2的 (a)、(b)、(c)所示。

分析波形可以得知,第一个同步器实现了将输入波形延迟两个时钟再输出的功能,其中reset信号为高表示系统复位。

第二个同步器实现了检测输入信号是否有高电平出现的功能,只要输入信号出现了高电平,则输出将一直为高。

第三个同步器实现了当reset信号有效时输出低电平,否者当输入信号为高电平时输出为高电平,当输入为低电平时输出为时钟的1/2分频信号。同时输出相对于输入有两个时钟周期的延时。a)b)

c)图2 三种同步器分别进行门级**的结果。

三、时序**。

分别对三个同步器进行时序**所得结果如图3的 (a)、(b)、(c)所示。可以很清楚的发现,时序**中的输出相比于功能**会有一个延时。而且这还导致了第三个同步器的一个输出错误,本来应该输出分频信号,却输出了低电平。

a)b)

c)图3 三种同步器分别进行时序**的结果。

附件:同步器一:

module homeworkone(

inputasynch_in ,inputclock

inputreset

output reg synch_out

reg temp = 1'b0;

always@(posedge clock) begin

if(reset) begin

synch_out <=1'b0

endelse begin

synch_out = temp

tempasynch_in ;

endend

endmodule

测试**:timescale 1 ns/ 1 ps

module homeworkone_test();

/ test vector input registers

reg asynch_in;

reg clock;

reg reset;

/ wires

wire synch_out;

/ assign statements (if any

homeworkone i1 (

/ port map - connection between master ports and signals/registers

.asynch_in(asynch_in),.synch_out(synch_out),.clock(clock),.reset(reset)

initial begin

clock1'b0

reset1'b1

asynch_in1'b0

#100 reset1'b0

#40 asynch_in1'b1

#40 asynch_in1'b0

#40 reset1'b1

#40 asynch_in1'b1

#40 asynch_in1'b0

#40 $stop

$display("running testbench

end always begin

#10 clockclock ;

end endmodule

同步器二:module homeworktwo(

inputclock ,inputasynch_in ,output reg synch_out

reg q11'b0

reg q21'b0

wire reset

assign reset = synch_out&(~asynch_in) ;

always@(posedge clock) begin

synch_out = q2

q2q1end

always@(posedge asynch_in) begin

if(reset) begin

q11'b0

endelse begin

q11'b1

endend

endmodule

测试**:timescale 1 ns/ 1 ps

module homeworktwo_test();

/ test vector input registers

reg asynch_in;

reg clock;

/ wires

wire synch_out;

/ assign statements (if any

homeworktwo i1 (

/ port map - connection between master ports and signals/registers

.asynch_in(asynch_in),.synch_out(synch_out),.clock(clock)

initial begin

clock1'b0

asynch_in1'b0

#40 asynch_in1'b1

#40 asynch_in1'b0

#40 asynch_in1'b1

#40 asynch_in1'b0

#40 $stop

$display("running testbench

end always begin

#10 clockclock ;

end endmodule

同步器三:module homeworkthree(

inputasynch_in ,inputclock

inputreset

output reg synch_out

reg q11'b0

reg q21'b0

wire temp

wire temp2

wire clrq1

wire clrq2

assign temp1 = synch_out&(~asynch_in) ;

assign temp2 = synch_out&(~asynch_in) ;

assign clrq1 = reset|temp1 ;

assign clrq2 = reset|temp2 ;

always@(posedge clock) begin

if(reset) begin

synch_out = 1'b0

endelse begin

synch_out = q2

endend

always@(posedge clock) begin

if(clrq2) begin

q21'b0

endelse begin

q2q1end

endalways@(posedge asynch_in) begin

if(clrq1) begin

q11'b0

endelse begin

q11'b1

endend

endmodule

测试**:timescale 1 ns/ 1 ps

module homeworkthree_test();

/ test vector input registers

reg asynch_in;

reg clock;

reg reset;

/ wires

wire synch_out;

/ assign statements (if any

homeworkthree i1 (

/ port map - connection between master ports and signals/registers

.asynch_in(asynch_in),.synch_out(synch_out),.clock(clock),.reset(reset)

initial begin

clock1'b0

reset1'b1

asynch_in1'b0

#100 reset1'b0

#40 asynch_in1'b1

#40 asynch_in1'b0

#40 asynch_in1'b1

#40 asynch_in1'b0

#40 asynch_in1'b1

#40 asynch_in1'b0

#40 asynch_in1'b0

#40 asynch_in1'b1

#40 reset1'b1

#40 asynch_in1'b1

#40 asynch_in1'b0

#40 $stop

$display("running testbench

end always begin

#1clockclock ;end

基于FPGA的嵌入式系统设计

作者 周汝。电脑知识与技术 学术交流 2008年第14期。摘要 在对现有的irl实现方案进行分析的基础上,提出了一种新的解决方案 基于fpga设备驱动的解决方案。该方案使用处理器控制方式结合嵌入式实时操作系统实现了通过互联网进行远程配置的功能,并且具有体系结构简单 跨平台 配置过程灵活快速 硬件成本...

基于FPGA的嵌入式系统设计

技术分类 可编程器件嵌入式系统 2007 07 19 中电网徐欣。1 概述 1.1 fpga的特点及其发展趋势。嵌入式系统是一个面向应用 技术密集 资金密集 高度分散 不可垄断的产业,随着各个领域应用需求的多样化,嵌入式设计技术和芯片技术也经历着一次又一次的革新。虽然asic的成本很低,但设计周期长...

课程设计fpga作业

帧同步搜索电路。设计要求 输入数据data为8bit并行数据流,基本结构为数据帧,帧长为10字节,帧同步字为h ff clk为输入同步时钟。如下图所示 真的 帧同步 假的 帧同步 1 搜索出数据流中的帧同步字信号,并给出帧同步标志。2 系统工作开始后,要连续3次确认帧同步字进入锁定状态后才输出帧同步...