当前位置: 首页 > news >正文

安路IP核应用举例(OSC、UART)

1.OSC(内部振荡器)

按照Project->New Project顺序新建工程后,后按照Tools->IP Generator顺序,创建IP核,如下图:

安路FPGA的内置OSC振荡模块频率可选30MHz、60MHz。

可选Verilog或VHDL语言。

如图,生成的.v文件只读,如需进一步的修改,可将文件另存,然后将新文件更新到工程里即可。

osc_clk为输出频率,osc_dis为使能输入,低电平有效,参数“60”为配置频率,单位为MHz。为测试效果,可进行分频后输出,如下:

module OSC_Test( clk_out );   //output 	reg	 clk_out;//input		 osc_dis;wire osc_clk;reg[24:0]count;ELF_PHY_OSC #(           //例化,配置为60MHz输出.FREQ("60"))osc_inst(.osc_clk(osc_clk),  //频率输出.osc_dis(1'b0)); //使能,低电平有效always@(posedge osc_clk)  //60M分频成1Hzif (count>=30000000-1)begin clk_out<=~clk_out; count<=0; endelsecount<=count+1;        endmodule

需要注意的是,程序重新Download后,FPGA功能有可能没有随即更新,可关闭电源重新上电再行操作。

2.UART(串口通信)

依据安路官方资料,其uart基本结构如下:

IP核配置选择如下:

以EF1A650LG144为例,24MHz时钟,波特率115200bps。

新建一顶层文件:

module uart_top(clk,  //24Mrst_n, //低电平复位rxd,  //rxdtxd      //txd);input clk;input rst_n;input rxd;output txd;wire tx_en; //发送使能,高电平有效wire rx_err; //接收错误,高电平有效wire rx_vld; //接收有效,高电平有效wire tx_rdy; //高电平准备好,可以发送;低电平发送忙wire [7:0] tx_data; //8位发送wire [7:0] rx_data; //8位接收
UART u0(
.clk(clk),
.rst_n(rst_n),
.rxd(rxd),
.tx_data(tx_data),
.tx_en(tx_en),
.rx_data(rx_data),
.rx_err(rx_err),
.rx_vld(rx_vld),
.tx_rdy(tx_rdy),
.txd(txd)
);
assign tx_en=rx_vld&tx_rdy&(!rx_err);
assign tx_data=rx_data+1'b1;
endmodule 

以上程序的作用是收到一个ACII码后,加1后回送,效果如下:

引脚约束:

set_pin_assignment	{ clk }	{ LOCATION = P20; }
set_pin_assignment	{ txd }	{ LOCATION = P143; }
set_pin_assignment	{ rxd }	{ LOCATION = P144; }
set_pin_assignment	{ rst_n }	{ LOCATION = P120; }

3.对于硬木课堂出品的EG4S20开发板来说,如下图,其时钟为50M,rxd、txd引脚分别为F12、D12。

IP核配置如下:

引脚配置如下:

set_pin_assignment	{ clk }	{ LOCATION = R7; }
set_pin_assignment	{ rst_n }	{ LOCATION = A14; }
set_pin_assignment	{ rxd }	{ LOCATION = F12; }
set_pin_assignment	{ txd }	{ LOCATION = D12; }

相关文章:

  • 互联网加竞赛 python+opencv+机器学习车牌识别
  • 四十二、Redis
  • 一些好用的VSCode扩展
  • C++:命名空间
  • input、el-input输入框输入规则
  • DevEco Studio 项目鸿蒙(HarmonyOS)资源引用(自定统和系统)
  • 【自定义Source、Sink】Flink自定义Source、Sink对ClickHouse进行读和批量写操作
  • 【模块化】 js 模块化(CommonJS, AMD, UMD, CMD, ES6)
  • linux系统命令
  • 基于OHTPPS实现网站HTTPS访问
  • 使用国内镜像源安装opencv
  • 计算机组成原理-选择语句和循环语句的汇编表示
  • 【数据结构】第二章——线性表(1)
  • linux(centos7)离线安装mysql-5.7.35-1.el7.x86_64.rpm-bundle.tar
  • 一文速览字节最新分布式操作系统KubeWharf
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • export和import的用法总结
  • mysql innodb 索引使用指南
  • Nacos系列:Nacos的Java SDK使用
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • node学习系列之简单文件上传
  • python 学习笔记 - Queue Pipes,进程间通讯
  • zookeeper系列(七)实战分布式命名服务
  • 回顾2016
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 小程序开发之路(一)
  • 在Unity中实现一个简单的消息管理器
  • #includecmath
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • #在 README.md 中生成项目目录结构
  • (1)Nginx简介和安装教程
  • (11)MATLAB PCA+SVM 人脸识别
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (4)Elastix图像配准:3D图像
  • (6)设计一个TimeMap
  • (待修改)PyG安装步骤
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (转)http-server应用
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .chm格式文件如何阅读
  • .equals()到底是什么意思?
  • .jks文件(JAVA KeyStore)
  • .net CHARTING图表控件下载地址
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .net core控制台应用程序初识
  • .NetCore 如何动态路由