fpga课程设计

发布 2022-09-30 22:16:28 阅读 7000

异步数据复接设计。

孟伟荣 201222250226 空天院。

根据3个时钟的不同速率,如果最终的并行输出是同步字节+对应数据的结构,可以发现aa+两帧第一路数据+bb+三帧第二路数据+cc正好满足要求。其中aabbcc均以16进制数据表示。aa,bb,cc分别使用一个byte的寄存器。

本设计中为使结果显而易见,第一路数据全部为1,第二路数据全部为0.

数据经过串并转换之后,进入一个fifo寄存器。fifo寄存器8位宽,存27个数据。第一位固定为aa,第12位固定为bb,第28位固定为cc.

第一路和第二路数据写入使用两个指针,分别是ind_a(5’b00001~5’b01010),ind_b(5’b01100~5’b11010).数据读出使用指针ind_c(5’b00000~5’b11011).具体结构如图1所示。

图1.最终并行输出示意。

图2.顶层结构示意图。

本设计使用的是新手喜闻乐见的自顶向下设计方法,最终设计如图2所示。

模块ch1和ch2在20mhz和30mhz的时钟激励下分别产生全1和全0的输出。s_to_p_1和s_to_p_2分别将ch1和ch2的串行输出转化为并行。模块multiplexer 即复用模块,在7mhz时钟激励下做8位并行输出。

上文所述的fifo寄存器和三个指针即在此。

下附程序:module ch1

// do not remove this line!

clk_1, data_1

// do not remove this line!

/ port declaration

// do not remove this line!

input clk_1;

output data_1;

reg data_1;

// do not remove this line!

always@(posedge clk_1)begin

data_1<=1'b1;

endendmodule

module ch2

// do not remove this line!

clk_2, data_2

// do not remove this line!

/ port declaration

// do not remove this line!

input clk_2;

output data_2;

reg data_2;

// do not remove this line!

always@(posedge clk_2)begin

data_2<=1'b0;

endendmodule

module s_to_p_1

// do not remove this line!

data_a, data_a_p

// do not remove this line!

/ port declaration

// do not remove this line!

input data_a;

output data_a_p;

reg [2:0] index_a=3'b000;

reg [7:0] r1;

reg [7:0] data_a_p;

// do not remove this line!

always@(data_a)begin

if (index_a==3'b111)begin

r1[index_a]=data_a;

data_a_p[7:0]=r1[7:0];

index_a=3'b000;

endelse begin

r1[index_a]<=data_a;

index_a<=index_a+3'b001;

endend

endmodule

module s_to_p_2

// do not remove this line!

data_b, data_b_p

// do not remove this line!

/ port declaration

// do not remove this line!

input data_b;

output [7:0] data_b_p;

reg [2:0] index_b=3'b000;

reg [7:0] r2;

reg [7:0] data_b_p;

// do not remove this line!

always@(data_b)begin

if (index_b==3'b111)begin

r1[index_b]=data_b;

data_b_p[7:0]=r2[7:0];

index_b=3'b000;

endelse begin

r1[index_b]<=data_b;

index_b<=index_b+3'b001;

endend

endmodule

module multiplexer

// do not remove this line!

clk_3, data_1, data_2, data_out

// do not remove this line!

/ port declaration

// do not remove this line!

input clk_3;

input [7:0] data_1;

input [7:0] data_2;

output [7:0] data_out;

reg [7:0] multimem[0:27];

reg [4:0] ind_a;

reg [4:0] ind_b;

reg [4:0] ind_b;

reg [7:0] data_1;

reg [7:0] data_2;

reg send;

// do not remove this line!

initial begin

multimem[0]=8'b10101010;

multimem[11]=8'b10111011;

multimem[27]=8'b11001100;

ind_a=5'b00001;//ind_a start from 1 to 10

ind_b=5'b01100;//ind_b start from 12 to 26

ind_c=5'b00000;//ind_c start from 0 to27

send=1'b0;

endalways@(data_1)begin

if(ind_a==5'b01010)begin

multimem[ind_a]<=data_1[7:0];

ind_a<=5'b00001;

endelse begin

multimem[ind_a]<=data_1[7:0];

ind_a<=ind_a+1;

endend

always@(data_2)begin

if(ind_b==5'b11010)begin

multimem[ind_b]<=data_2[7:0];

ind_b<=5'b01100;

send=1;

endelse begin

multimem[ind_b]<=data_2[7:0];

ind_b<=ind_b+1;

endend

always@(posedge clk_3)begin

if (send) begin

if (ind_c==5'b11011)begin

data_out[7:0]=multimem[ind_c];

ind_c=5'b00000;

endelse begin

data_out[7:0]<=multimem[ind_c];

ind_c<=ind_c+1;

endend

endendmodule

图3.**结果。

**结果如图3所示,和图1中的预期结果基本吻合。

FPGA课程设计

黑龙江大学。fpga通信模块设计。专业 通信工程。学号 20085415 姓名 王琪。fpga通信模块设计。1 现代数字信号处理。随着电子技术和集成电路技术的飞速发展,数字信号处理已广泛应用于语音 图像处理,通信和多 等领域中。傅立叶变换 dft 作为其数字信号处理中的基本运算,发挥着重要作用。特别...

FPGA课程设计

fpga课。程。设。计。专业 10级电子信息工程。班级 1班。姓名 傅雅琦。学号 100102011120 指导教师 祝宏。制作日期 2012年12月13日。1.模为100的可加减计数器。1.标题及任务书。第一阶段 熟悉设计要求构造大致思路。第二阶段 图书馆查阅资料,仿照例子编程。第三阶段 开始编程...

FPGA课程设计

安康学院。fpga sopc课程设计报告书。设计项目成绩评定表。设计报告书目录。一 设计目的 1 二 设计思路 1 三 设计过程 1 3.1 系统总体方案 1 3.2 程序设计具体步骤 2 四 系统调试与结果 8 五 主要元器件与设备 8 六 课程设计体会与建议 8 6.1 设计体会 8 6.2 设...