一、行为描述设计。
采用行为描述风格分别完成所给的三种同步器电路的设计,设计平台选择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次确认帧同步字进入锁定状态后才输出帧同步...