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

打工人日报#20251002

打工人日报#20251002

假期进行中

知识点

用按键来控制 LED 灯闪烁

功能:
LED默认常亮
按下按键对应的LED熄灭
在这里插入图片描述
当连接用户 LED 灯的 IO 电压为高时,用户 LED 灯熄灭,当连接 IO 电压为低时,用户 LED 会被点亮。
在这里插入图片描述
4 个用户 KEY 均连接到 PL 端 BANK35的 IO 上。按键按下,信号为低

由于前面的练习,已经熟悉vivado操作方法了,这里省略,仅展示关键步骤

管脚约束
在这里插入图片描述
KEY.v

module flow_led (input sys_clk,input sys_rst_n,input KEY1,input KEY2,input KEY3,input KEY4,output reg [3:0] led
);reg [24:0] cnt;// LED控制部分
always @(posedge sys_clk or negedge sys_rst_n) beginif (!sys_rst_n) beginled <= 4'b1111;end else if (!KEY4) beginled <= 4'b1000;end else if (!KEY3) beginled <= 4'b0100;end else if (!KEY2) beginled <= 4'b0010;end else if (!KEY1) beginled <= 4'b0001;end
endendmodule
  • module flow_led 定义了一个名为 flow_led 的模块。
  • 该模块有六个输入端口:
  • sys_clk:通常代表系统时钟信号,用于驱动模块内的时序逻辑。虽然在当前代码的逻辑实现中,时钟信号并没有被有效利用来实现随时间变化的动态功能,但它可能是为后续扩展功能预留的。
  • sys_rst_n:低电平有效的复位信号。当该信号为低电平时,会触发模块内的复位逻辑。
  • KEY1、KEY2、KEY3、KEY4:这四个输入端口大概率是用于连接外部按键的信号。根据代码逻辑,低电平表示按键按下。
  • 一个输出端口 led:这是一个 4 位的寄存器类型输出,用于控制 LED 的状态。
  • reg [24:0] cnt;:声明了一个 25 位的寄存器 cnt。然而,在当前代码中,这个寄存器没有被使用到,可能是为未来添加基于计数的功能预留的,比如实现跑马灯的速度控制等。
  • always @(posedge sys_clk or negedge sys_rst_n):这个 always 块对 sys_clk 的上升沿和 sys_rst_n 的下降沿敏感。
  • if (!sys_rst_n) begin led <= 4’b1111; end:当复位信号 sys_rst_n 为低电平时,将 led 赋值为 4’b1111,即所有 LED 点亮,这是模块的初始状态。
  • else if (!KEY4) begin led <= 4’b1000;:如果 KEY4 信号为低电平(按键 4 按下),将 led 赋值为 4’b1000,此时只有最高位 LED 熄灭。
  • else if (!KEY3) begin led <= 4’b0100;:如果 KEY3 信号为低电平(按键 3 按下),将 led 赋值为 4’b0100,此时只有次高位 LED 熄灭。
  • else if (!KEY2) begin led <= 4’b0010;:如果 KEY2 信号为低电平(按键 2 按下),将 led 赋值为 4’b0010,此时只有次低位 LED 熄灭。
  • else if (!KEY1) begin led <= 4’b0001;:如果 KEY1 信号为低电平(按键 1 按下),将 led 赋值为 4’b0001,此时只有最低位 LED 熄灭。

KEY.xdc
这个是可以自动保存的,这里做对比参考

set_property PACKAGE_PIN U18 [get_ports sys_clk]
set_property PACKAGE_PIN H18 [get_ports {led[3]}]
set_property PACKAGE_PIN J18 [get_ports {led[2]}]
set_property PACKAGE_PIN K14 [get_ports {led[1]}]
set_property PACKAGE_PIN J14 [get_ports {led[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports KEY1]
set_property IOSTANDARD LVCMOS33 [get_ports KEY2]
set_property IOSTANDARD LVCMOS33 [get_ports KEY3]
set_property IOSTANDARD LVCMOS33 [get_ports KEY4]
set_property IOSTANDARD LVCMOS33 [get_ports sys_clk]
set_property IOSTANDARD LVCMOS33 [get_ports sys_rst_n]
set_property PACKAGE_PIN N15 [get_ports sys_rst_n]
set_property PACKAGE_PIN M15 [get_ports KEY1]
set_property PACKAGE_PIN M14 [get_ports KEY2]
set_property PACKAGE_PIN L17 [get_ports KEY3]
set_property PACKAGE_PIN L16 [get_ports KEY4]create_clock -period 20.000 -name sys_clk -waveform {0.000 10.000} [get_ports sys_clk]

流程总结

创建工程
添加XX.v
Open Elaborated Design
添加管脚约束
Run Synthesis
添加时序约束
Run implementation
Generate Bitstream
上板验证

阅读

《杀死一只知更鸟》
第七章 结束在这里插入图片描述

http://www.dtcms.com/a/434426.html

相关文章:

  • GMSL Layout Guide及其解读
  • ThinkPad X1 Carbon Gen13,X1 2in1 Gen10(21NX,21NY,21Q0,21Q1)原厂Win11Home系统
  • 设置VLC播放器的皮肤样式
  • 外贸网站搭建网站优化过度被k
  • 【工业实战】从架构到优化:企业级RAG客服对话系统的构建之道
  • CMake 入门实战手册:从理解原理开始,打造高效 C/C++ 开发流程
  • MySQL 5.7 主主复制 + Keepalived 高可用配置实例
  • 2014 年真题配套词汇单词笔记(考研真相)
  • 构建AI智能体:五十一、深思熟虑智能体:从BDI架构到认知推理的完整流程体系
  • 自由学习记录(104)
  • 【开题答辩全过程】以 ssm蛋糕销售网站的设计与实现为例,包含答辩的问题和答案
  • Photoshop - Photoshop 工具从工具栏消失
  • 专题网站建设策划dw一个完整网页的代码
  • 刷赞网站推广免费链接网站后台怎么添加栏目
  • LLM 笔记 —— 01 大型语言模型修炼史(Self-supervised Learning、Supervised Learning、RLHF)
  • 框架系统在自然语言处理深度语义分析中的作用、挑战与未来展望
  • LLM 笔记 —— 03 大语言模型安全性评定
  • d-分离:图模型中的条件独立性判定准则
  • 【自然语言处理】文本规范化知识点梳理与习题总结
  • 上海商城网站建设公司算命手机网站开发
  • 重塑Excel的智慧边界:ExcelAgentTemplate架构深度解析与LLM集成最佳实践
  • QoS之拥塞避免配置方法
  • vscode搭建C/C++配置开发环境
  • 在鸿蒙NEXT中发起HTTP网络请求:从入门到精通
  • 做网站商家网站公告栏代码
  • 做企业网站联系群晖网站建设
  • Java坐标转换的多元实现路径:在线调用、百度与高德地图API集成及纯Java代码实现——纯Java代码实现与数学模型深度剖析
  • 【socket编程中的常规操作,阻塞/非阻塞模式的差别】
  • 5G NR PDCCH DCI
  • 网站建设海淀区360浏览器打开是2345网址导航