UART+双口RAM的使用

该实验使用AC620开发板,通过UART_RX接收并存储数据到双口RAM,然后通过UART_TX发送。UART_DPRAM设计包括UART_RX、UART_TX、KEY_FILTER和CTRL模块,实现数据接收、存储、发送及按键控制。通过仿真验证功能,并在板级进行实际验证。
摘要由CSDN通过智能技术生成

实验器材

AC620开发板、 串口猎人、 Quartus ii

实验内容:

通过PC机串口助手发送数据,FPGA中 UART_RX接收模块接收数据,并将其存储到双口RAM中,然后读取双口RAM中存储的数据,通过UART_TX连续发送数据到PC机中显示。通过按键控制是否发送数据,按键一次,开始发送数据,再按一次停止发送数据。
diagram

实验原理

dual port RAM

通过Quartus ii 中的 Tools --> IP Catalog 找到RAM 2 port, 然后配置为一个256 字节的存储器(其他配置默认),取名为dpram
dpram
配置完成之后将 dpram.qip文件加入工程中,编写相关的仿真文件进行仿真。查看波形图可以发现从ram中读取数据的时候,数据会滞后两个时钟周期输出,因此,在后续UART_TX传输数据时要延迟两个时钟周期再开始传输。

仿真

部分仿真代码如下所示:

clock<= not clock after 10 ns;				--产生50MHZ时钟

process
begin
	data<=X"00";							-- 初始化
	wraddress<=X"00";
	wren<='0';
	rdaddress<=X"1e";						-- 将读取地址设为30,更方便查看仿真时读取数据的变化时刻
	wait for 21 ns;							-- 错开时钟沿
	
	for i in 0 to 15 loop					-- 写入16 个数据
		wren<='1';
		data<= conv_std_logic_vector(255 - i,8);	-- 从255 到240
		wraddress<=conv_std_logic_vector(i,8);
		wait for 101 ns;
	end loop;
	
		wren <= '0';
		wait for 21 ns;


	for i in 0 to 15 loop							-- 读取15个数据
		rdaddress<=conv_std_logic_vector(i,8);		
		wait for 101 ns;
	end loop;
	
	wait;
end process;

仿真结果:
ram_simulation

UART_TX , UART_RX 和KEY_FILTER

这三个模块都在之前的实验中详细阐述,在此就不加以描述了。
UART_TX 发送模块
UART_RX 接受模块
KEY_FILTE

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值