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设计工作 ...
随机推荐
- javascript导图 标签: javascript 2015-12-06 16:37 721人阅读 评论(24)
- POJ-3615_Cow Hurdles
Cow Hurdles Time Limit: 1000MS Memory Limit: 65536K Description Farmer John wants the cows to prepar ...
- hdu 4128 Running relay (线性规划转半平面交)
Problem - 4128 对偶线性规划转半平面交,这题的正解O(nlogn)解法,目前网上没有找到这样的正解. 原来的不等式组, sigma{-si*xi}>=-W+d*sigma{si} ...
- Libev源码分析04:Libev中的相对时间定时器
Libev中的超时监视器ev_timer,就是简单的相对时间定时器,它会在给定的时间点触发超时事件,还可以在固定的时间间隔之后再次触发超时事件. 所谓的相对时间,指的是如果你注册了一个1小时的超时事件 ...
- 【hiho一下 第147周】小Hi的烦恼
[题目链接]:http://hihocoder.com/contest/hiho147/problem/1 [题意] [题解] bitset的应用; 设better[j][i]表示第j个科目排名为1. ...
- day5_python之hashlib模块
用来校验文本内容hash:一种算法 ,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法三个特点:1.内容相同则h ...
- uva 12296 Pieces and Discs (Geometry)
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- H3C NAT的信息显示和调试
- H3C 其他OSPF显示命令
- python基础七之copy
浅拷贝 没有嵌套,则copy后完全不同,有嵌套,则copy后本体不同,嵌套相同. l1 = [1, 2, [4, 5, 6], 3] l2 = l1.copy() print(l1 is l2) # ...