FPGA之乒乓操作
比如将乒乓操作运用在液晶显示的控制模块上,如图所示。
module pingpang
(
input clk ,
input rst_n ,
input [:] data_in , // 输入数据
output reg [:] data_out // 输出数据
); // ------------------------------------------------------ //
reg [:] buffer1 ; // 缓存1
reg [:] buffer2 ; // 缓存2
reg wr_flag ; // 写标志,wr_flag=0,写buffer1,wr_flag=1,写buffer2
reg rd_flag ; // 读标志,rd_flag=0,读buffer2,rd_flag=1,读buffer1
reg state ; // 状态机,0:写1读2,1:写2读1,状态转移和输出分开编码
// ------------------------------------------------------ //
// 状态转移
always @ (posedge clk or negedge rst_n)
begin
if(rst_n == 'b0)
begin
state <= 'b0;
end
else
begin
state <= !state;
//case(state)
// 1'b0 : state <= 1'b0; // 写1读2->写2读1
// 1'b1 : state <= 1'b1; // 写2读1->写1读2
// default : state <= 1'b0;
//endcase
end
end
// ------------------------------------------------------ //
// 状态输出
always @ (state)
begin
case(state)
'b0:
begin
wr_flag = 'b0; // 写1
rd_flag = 'b0; // 读2
end
'b1:
begin
wr_flag = 'b1; // 写2
rd_flag = 'b1; // 读1
end
default:
begin
wr_flag = 'b0;
rd_flag = 'b0;
end
endcase
end
// ------------------------------------------------------ //
// 写buffer数据
always @ (posedge clk or negedge rst_n)
begin
if(rst_n == 'b0)
begin
buffer1 <= 'b0;
buffer2 <= 'b0;
end
else
begin
case(wr_flag)
'b0 : buffer1 <= data_in; // wr_flag = 0,写buffer1
'b1 : buffer2 <= data_in; // wr_flag = 1,写buffer2
default :
begin
buffer1 <= 'b0;
buffer2 <= 'b0;
end
endcase
end
end
// ------------------------------------------------------ //
// 读buffer数据
always @ (posedge clk or negedge rst_n)
begin
if(rst_n == 'b0)
begin
data_out <= 'b0;
end
else
begin
case(rd_flag)
'b0 : data_out <= buffer2; // rd_flag=0,读buffer2
'b1 : data_out <= buffer1; // rd_flag=1,读buffer1
default : data_out <= 'b0;
endcase
end
end
// ------------------------------------------------------ //
endmodule
2.2 FPGA仿真代码
`timescale 1ns / 1ps
module pingpang_tb();
reg clk ;
reg rst_n ;
reg [:] data_in ;
wire[:] data_out;
always # clk = ~clk;
initial
begin
rst_n <= 'b0 ;
clk <= 'b0 ;
#;
rst_n <= 'b1 ;
end
always @(posedge clk or negedge rst_n)
begin
if(!rst_n)
data_in <= 'd0;
else
data_in <= data_in + 'b1;
end
pingpang dut
(
.clk (clk ),
.rst_n (rst_n ),
.data_in (data_in ),
.data_out (data_out )
);
endmodule
3.仿真结果

FPGA之乒乓操作的更多相关文章
- 【FPGA技巧篇一】FPGA设计的四种常用思想与技巧之一 :乒乓操作
本文篇章将讨论一下的四种常用 FPGA 设计思想与技巧: 乒乓操作. 串并转换. 流水线操作. 数据接口同步化, 都是 FPGA 逻辑设计的内在规律的体现, 合理地采用这些设计思想能在FPGA设计工作 ...
- FPGA SD 卡 之 乒乓操作 、同步fifo
这里记录一个实际的需要使用乒乓操作的例子:读sd卡数据的时,在spi的模式下.发送单数据块的读取命令,在回应之后会有 512字节的数据.使用乒乓操作,可以用两个八位的寄存器,就可以完成连续的512字节 ...
- sdram之乒乓操作
在实时显示时,为了保证画面显示的完整性需要对SDRAM进行乒乓操作. SDRAM 中有 4 个bank ,地址分别为00 01 10 11,后面将用 0 1 2 3来描述 bank 0和1 作为第一个 ...
- DMA缓冲区乒乓操作的处理
http://www.51hei.com/bbs/dpj-141761-1.html https://blog.csdn.net/sunnydreamrain/article/details/8288 ...
- FPGA重要设计思想
FPGA重要设计思想 1.速度和面积互换原则.以面积换速度可以实现很高的数据吞吐率,其实串/并转换.就是一种以面积换速度的思想 2.乒乓操作. 3.串/并转换的思想. 高速数据处理的重要技巧之一. ...
- [华清远见]FPGA公益培训
本套视频教程为华清远见 网络公益培训活动,主讲人:姚远老师,华清远见高级讲师. ------------------------------------------------------------ ...
- 【转】 FPGA设计的四种常用思想与技巧
本文讨论的四种常用FPGA/CPLD设计思想与技巧:乒乓操作.串并转换.流水线操作.数据接口同步化,都是FPGA/CPLD逻辑设计的内在规律的体现,合理地采用这些设计思想能在FPGA/CPLD设计工作 ...
- CPLD VS FPGA
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL.GAL.CPLD等可编程器件的基础上进一步发展的产物.它是作为专用集成电路(ASIC)领域中的 ...
- FPGA/CPLD设计思想与技巧
本文讨论的四种常用FPGA/CPLD设计思想与技巧:乒乓操作.串并转换.流水线操作.数据接口同步化,都是FPGA/CPLD逻辑设计的内在规律的体现,合理地采用这些设计思想能在FPGA/CPLD设计工作 ...
随机推荐
- 关于IOS 微信浏览器 点击输入框自动放大问题
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0& ...
- @hdu - 6329@ Problem K. Transport Construction
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定 n 个点,第 i 个点位于 (xi, yi). 在第 i ...
- vue init定制团队模板之meta.js/meta.json写法入门
在上一篇文章中,我们提到了meta.js,这次我们详细了解一下meta.js里面各个模块的写法. 对于 meta.js/metajson 文件, 目前主要字段如下: prompts<Object ...
- BCompare 4 key SN 亲测可用
支持BCompare 4.2.3 32位,亲测可用 w4G-in5u3SH75RoB3VZIX8htiZgw4ELilwvPcHAIQWfwfXv5n0IHDp5hv 1BM3+H1XygMtiE0- ...
- 15个非常重要的Apache开源项目汇总
15个非常重要的Apache开源项目汇总 自1999年创立以来,Apache软件基金会如今已成了众多重要的开源软件项目之家.本文列举了15个多年来非常重要的Apache项目,这些项目不仅对开源运动来说 ...
- Postman接口测试工具学习笔记
- 新建测试接口 在Postman中有两种新建测试接口的方式,第一种是图片右上角的,点击可以选择 request 请求进行新建 选择 Request 以后会出现下面图片的对话框,让你输入一个保存接口的 ...
- Codeforces Round #194 (Div.1 + Div. 2)
A. Candy Bags 总糖果数\(\frac{n^2(n^2+1)}{2}\),所以每人的数量为\(\frac{n}{2}(n^2+1)\) \(n\)是偶数. B. Eight Point S ...
- 关于Spring JavaWeb工程中的ContextRefreshedEvent事件
在应用启动时,通常想在此时预加载一些资源,全局使用. Spring会在操作应用上下文时,使用ApplicationEventPublisher触发相关ApplicationContextEvent,我 ...
- H3C RIP路由表的初始化
- Codeforces Round #564 (Div. 2)
传送门 参考资料 [1]: the Chinese Editoria A. Nauuo and Votes •题意 x个人投赞同票,y人投反对票,z人不确定: 这 z 个人由你来决定是投赞同票还是反对 ...