实验器材
AC620开发板、 串口猎人、 Quartus ii
实验内容:
通过PC机串口助手发送数据,FPGA中 UART_RX接收模块接收数据,并将其存储到双口RAM中,然后读取双口RAM中存储的数据,通过UART_TX连续发送数据到PC机中显示。通过按键控制是否发送数据,按键一次,开始发送数据,再按一次停止发送数据。
实验原理
dual port RAM
通过Quartus ii 中的 Tools --> IP Catalog 找到RAM 2 port, 然后配置为一个256 字节的存储器(其他配置默认),取名为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;
仿真结果:
UART_TX , UART_RX 和KEY_FILTER
这三个模块都在之前的实验中详细阐述,在此就不加以描述了。
UART_TX 发送模块
UART_RX 接受模块
KEY_FILTE