quartus使用串口IP模块
在quartus平台中使用串口模块的IP,需要使用到platform designer软件来实现。
1、在quartus界面调出IP Catalog界面。

2、在IP catalog中搜索UART,找到RS2323模块,并双击打开,选择合适的路径和存放。

3、使用该模块若不搭建nios软核,则使用streaming。

在右上角电机Block Symbol或者在菜单选择View->Block Symbol打开模块符号。

4、串口配置了波特率,其自动配置的参数与时钟有关,因此需要加入时钟模块,告知系统输入时钟为多少。
操作如下:

5、打开系统连接的界面,为其添加时钟输入模块。

6、在IP搜索栏搜索clock,双击选择的模块添加时钟模块,输入模块。

7、根据板载资源,设置时钟的参考时钟。

8、连接时钟模块和串口模块的clk和reset。

9、点击Generate HDL生成模块。

10、在quartus中添加生成的sys系统。



11、从platform designer生成模块实例将实例拷贝到添加到quartus的顶层文件中,添加写数据和读数据的时序。



这里只测试一下串口发送数据的功能,接收数据的操作基本是一样的。
12、在platform designer查看串口模块发送数据的时序。


同理在这里一样可以查看到接收数据的时序。需要注意的是,时序中的数据其实是在to_uart_valid信号为1时,数据会被写入。下面是测试串口发送数据的顶层文件。
module top2(
input wire clk,//50MHz时钟
//rst,//
output reg led, //用于指示
input wire rxd,
output wire txd,
inout dht_io
); //*********************************PROCESS**************************************
// 复位模块
//****************************************************************************** reg rst_n ;
reg [:]delay_cnt;
always@(posedge clk)
begin
if(delay_cnt>='d35530)begin
delay_cnt <= delay_cnt;
rst_n <= 'b1;
end
else begin
rst_n <= 'b0;
delay_cnt <= delay_cnt + 'b1;
end
end
//指示灯
//assign txd = led;
reg [:]cnt;
reg led_f1,tx_flag;
always@(posedge clk)
begin
led_f1 <= led;
tx_flag <= led &(~led_f1);
if(cnt >= 'd25000000 - 1)
begin
cnt <= ;
led <=~led;
end
else begin
cnt <= cnt + 'b1 ;
end
end
//--------------------------------------------
localparam s_s1=;
localparam s_s2=;
localparam s_s3=;
localparam s_s4=;
reg [:]send_data;
reg to_uart_valid , to_uart_ready;
reg [:]send_st;
reg [:]data_cnt;
always@(posedge clk)
begin
if(!rst_n)begin
to_uart_ready <= 'b0;
to_uart_valid <= 'b0;
send_data <= 'd0;
send_st<= s_s1;
data_cnt <= 'd0;
end
else begin
case(send_st)
s_s1:begin//待机
if(tx_flag)begin
send_st <= s_s2;
to_uart_valid <= 'b0;
to_uart_ready<= 'b0;
data_cnt <= 'd0;
send_data <= ;
end
else begin
to_uart_valid <= 'b0;
to_uart_ready<= 'b0;
end
end
s_s2:begin
if(data_cnt <= 'd8-1'b1)begin
to_uart_valid <= 'b1;
//to_uart_ready <= (data_cnt >= 8'd5-1)?1'b0:1'b1;
send_data <= data_cnt+;
data_cnt <= data_cnt + 'b1;
send_st <= (data_cnt >= 'd5-1)?s_s3:s_s2;
end
end
s_s3:begin
to_uart_valid <= 'b0;
to_uart_ready <= 'b1;
send_st <= s_s1;
data_cnt<='d0;
end
default :send_st <= s_s1;
endcase
end
end
IP_UART u0 (
//.rs232_0_from_uart_ready (<connected-to-rs232_0_from_uart_ready>), // rs232_0_avalon_data_receive_source.ready
//.rs232_0_from_uart_data (<connected-to-rs232_0_from_uart_data>), // .data
//.rs232_0_from_uart_error (<connected-to-rs232_0_from_uart_error>), // .error
//.rs232_0_from_uart_valid (<connected-to-rs232_0_from_uart_valid>), // .valid
.rs232_0_to_uart_data (send_data), // rs232_0_avalon_data_transmit_sink.data
.rs232_0_to_uart_error (), // .error
.rs232_0_to_uart_valid (to_uart_valid), // .valid
.rs232_0_to_uart_ready (), // 这是输入信号 .ready
.rs232_0_UART_RXD (rxd), // rs232_0_external_interface.RXD
.rs232_0_UART_TXD (txd), // .TXD
.clk_clk (clk), // clk.clk
.reset_reset_n (rst_n) // reset.reset_n
); endmodule
quartus使用串口IP模块的更多相关文章
- SoC中的IP模块学习
SoC中的IP模块学习 理解IP Spec-->register定义,理解原理+架构框图 查看testcase+model(看已有的测试例程),分析操作/使用模块的流程,寄存器的配置方法 运行仿 ...
- 玩转X-CTR100 l STM32F4 l ESP8266串口WIFI模块
我造轮子,你造车,创客一起造起来!更多塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]- ESP8266是一款非常火的WIFI模块,性价 ...
- 基于H7的串口WIFI模块ESP8266的TCP客户端例子和操作说明(AP兼STA模式)
说明: 1.如果不熟悉网络的话,等我这几天更新V7用户手册的ESP8266章节,如果熟悉的话,直接操作即可,这里将操作说明发出来. 2.串口WIFI是采用的AT指令操作,简单易用,指令手册在这个帖子里 ...
- python 跟踪IP模块
#coding=utf-8 import re import subprocess def tracertIP(ip): p = subprocess.Popen(['tracert',ip],std ...
- Quartus II 中参数化模块库(LPM)的使用
Quartus II 的LPM库所在的目录是\altera\11.0\quartus\libraries\megafunctions 现以LPM_MULT为例进行演示: 思路:1.首先创建一个pro ...
- ESP8266串口模块的基本使用【转】
本文转载自:http://www.shaoguoji.cn/2017/01/15/ESP8266-usage/ ESP8266是一款超低功耗的UART-WiFi 透传模块,拥有业内极富竞争力的封装尺寸 ...
- python自动化运维笔记2 —— IP地址处理模块IPy
1.2 实用的IP地址处理模块IPy ip地址规划是网络设计中非常重要的一个环节,规划的好坏会直接影响路由协议算法的效率,包括网络性能.可扩展性等方面,在这个过程当中,免不了要计算大量的IP地址,包括 ...
- quartus ip核破解
在证书文件中添加一段: FEATURE 6AF7_0012 alterad 2035.12 permanent uncounted E75BE809707E VENDOR_STRING="i ...
- nios II--实验6——串口硬件部分
串口 硬件开发 新建原理图 打开Quartus II 11.0,新建一个工程,File -> New Project Wizard…,忽略Introduction,之间单击 Next> 进 ...
随机推荐
- 升级@Scheduled-分布式定时任务
最近我在对项目的定时任务服务升级,希望改造成分布式,原本是利用@Scheduled注解实现,然而它并不支持分布式,如果改成quartz或者Spring Cloud Task,感觉对于自己这个简单的项目 ...
- redis-分布式锁-刷新信号量
为什么需要刷新信号量呢,因为信号量有过期时间: 为什么信号量需要过期时间呢,因为需要利用超时特性,解决分布式锁存在的一些固有缺陷. 而对于类似流式API来说,一般10秒的过期时间是远远不够的.因此我们 ...
- 问题:程序编译通过,但是执行时报错:coredump
问题描述: 在一个客户现场搭建环境时,遇到了一个棘手的问题,C代码编译通过后,无法正常运行,启动会出现“coredump”错误. 运行环境为新搭建的AIX6.1,数据库为Oracle11.2.0.2. ...
- jar 命令使用
1.jar命令一般用来对jar包文件处理,jar包是由JDK安装目录\bin\jar.exe命令生成的,当我们安装好JDK,设置好path路径,就可以正常使用jar.exe命令,它会用lib\tool ...
- redis服务打不开--解决办法
D:\>redis-server[11896] 04 Dec 19:20:05.122 # Warning: no config file specified, using the defaul ...
- 快学Scala 第六课 (类getter和setter)
类getter和setter 如果字段定义是private[this], 字段是私有的,但不生成getter和setter方法. class Counter { private[this] var v ...
- Linux的命令(待更新)
本文说明: ①本文格式: 序号.命令 详解,用文字或者代码 举例: ②本文索引: 1.设置IP 2.ps -aux 3.grep 4. | 1.设置IP 如果本地网卡eth0已经启动,就可以用下面的命 ...
- ShutdownHook- Java 优雅停机解决方案
想象一下,如果你现在刚好在 word 上写需求文档,电脑突然重启.等待开机完成,你可能会发现写了一个小时文档没有保存,就这么没了... 一个正在运行 Java 应用如果突然将其停止,影响不止数据丢失, ...
- 写了那么多年 Java 代码,终于 debug 到 JVM 了
继上篇文章 原创 | 全网最新最简单的 openjdk13 代码编译 之后,我们有了自己编译后的 jdk 和 hotspot,如下图所示.接下来就来干一番事情. 搭建调试环境 1.下载 CLion 软 ...
- Vue学习系列(一)——初识Vue.js核心
前言 vue.js是一套构建用户界面的渐进式框架,vue.js的目标是通过尽可能简单的API实现响应的数据绑定和组合的视图组件. vue通过DOM事件操作和指令来进行视图层和模型层的相互通讯,会为每一 ...