代码编织梦想

18 19 spi接口的74hc595驱动数码管实验-爱代码爱编程

1. 串行移位寄存器原理(以四个移位寄存器为例) 1. 通过移位寄存器实现串转并:一个数据输入端口可得到四位并行数据。 通过给data输送0101数据,那么在经过四个时钟周期后,与data相连的四个寄存器的输出端口得到了0101这样的数据,然后我们将latch信号拉高,在下一个时钟周期,D0, D1, D2, D3同时分别获得了这四个数据1010。(其

16 亚稳态原理和解决方案-爱代码爱编程

1. 亚稳态原理 亚稳态是指触发器无法在某个规定的时间段内到达一个可以确认的状态。在同步系统中,输入总是与时钟同步,因此寄存器的setup time和hold time是满足的,一般情况下是不会发生亚稳态情况的。在异步信号采集中,由于异步信号可以在任意时间点到达目的寄存器,所以无法保证满足目的寄存器Tsu和Th的要求,从而出现亚稳态  2. 异步信号用

17 abcd数码管显示与动态扫描原理-爱代码爱编程

1. 驱动八位数码管循环点亮 1.1 数码管结构图 数码管有两种结构,共阴极和共阳极,ACX720板上的是共阳极数码管,低电平点亮。 1.2 三位数码管等效电路图 为了节约I/O接口,各个数码管的各段发光管被连在一起,通过sel端口选择要发光的数码管。 1.3 单个数码管发光的LUT(look up table) 2.  数码管显示

13. 串口接收模块的项目应用案例-爱代码爱编程

1. 使用串口来控制LED灯工作状态 使用串口发送指令到FPGA开发板,来控制第7课中第4个实验的开发板上的LED灯的工作状态。 LED灯的工作状态:让LED灯按指定的亮灭模式亮灭,亮灭模式未知,由用户指定,8个变化状态为一个循环,每个变化状态的时间值可以根据不同的应用场景来选择。 1.1 原理如下 1.2 任务简化为: 如何使用串口接收8个

05 06 verilog基础语法与应用讲解-爱代码爱编程

05. 1. 位操作 计数器实验升级,设计8个LED灯以每个0.5s的速率循环闪烁(跑马灯) 1.1 方法1:使用移位操作符<<来控制led灯的循环亮灭 设计代码 Verilog中,判断操作的时候不加位宽限定是可以的,比如if(counter == 24999999)或者if(counter == 25’d24999999)都可以,但

verilog-爱代码爱编程

#学习记录# 1  串并转换   实现串并转换的主要方式有双口RAM和FIFO,移位寄存器等。对于数据量较大的一般使用双端口RAM或者FIFO,对于数据量较小的使用移位寄存器实现。 2  使用位移寄存器实现数据串并转换 2.1  串行数据转并行数据   串行数据转并行数据的电路图如图1所示: 图1  串行数据转并行数据电路图 2.1.1 

verilog-爱代码爱编程

#学习记录# 1  双端口RAM简述   FPGA工程实践中的RAM形式很多,在设计中常用的RAM有单口RAM:SPRAM(single-port RAM)。双口RAM:TPRAM(two-port RAM)和真双口RAM:(dual-port RAM)。在芯片设计中,具体使用哪一种RAM,要根据设计的需要而定,比如读写速度和面积。图1、图2分别给出了

modelsim如何关联第三方编辑器gvim?-爱代码爱编程

我安装的是Modelsim SE-64 10.4和gVim 9.0 首先,根据Modelsim安装路径,找到“pref.tcl”文件,打开此文件。我电脑上的路径是“D:\FPGA\modelsim\modelsim-1\tcl\vsim\pref.tcl”,打开结果如下图: 图1 通过gVim编辑器打开pref.tcl文件结果图 其次,找到图

verilog学习笔记二(多路选择器)_case多路选择器-爱代码爱编程

一、always语句块实现二选一逻辑 always语句块里赋值的变量需要是reg型reg型变量赋值用带箭头的等号^符号为异或,&为与  verilog代码: //2023/3/28 lzp //二选一逻辑设计 `timescale 1ns/10ps module select_gate(a, b, sel, y); input a,

verilog学习笔记三(补码转换和七段译码逻辑设计)_verilog原码转补码-爱代码爱编程

一、补码转换  verilog代码: //2023/3/28 lzp //二进制补码转换 `timescale 1ns/10ps module complement_transfer(b_num, b_complement_num); input[7:0] b_num; output[7:0] b_complement_num; reg[7:

verilog之阻塞赋值与非阻塞赋值_verilog什么时候用阻塞赋值-爱代码爱编程

目录 一、阻塞赋值 二、非阻塞赋值 三、什么时候用阻塞赋值、非阻塞赋值? 一、阻塞赋值          阻塞赋值的符号用 “=” 表示,对应的电路结构往往与触发沿没有关系,只与输入电平的变化有关系。它的操作可以认为是只有一个步骤的操作,即计算赋值号右边的语句并更新赋值号左边的语句,此时不允许有来自其他Verilog语句的干扰,直到现

verilog学习笔记(串口rs232,基于野火教程)_verilog uart rx 野火-爱代码爱编程

目录 一、串口简介    二、设计与实现 串口数据回环顶层模块设计 串口接收模块uart_rx 串口发送模块uart_tx 顶层模块rs32_top 三、上板验证   一、串口简介   其中SPI和I2C为同步通信接口,双方时钟频率相同。而UART属于异步通信接口,没有统一时钟,靠起始位和终止位来接收数据。 上图为 串口

verilog mux_41(数据选择器)_mux41-爱代码爱编程

#学习记录# 1  四选一数据选择器简述 数据选择器的逻辑功能:在地址选择信号的控制下,从多路数据中选择一路作为输出。数据选择器的符号如图1所示,真值表如图2所示。 图1  四选一数据选择器符号 图2  四选一数据选择器真值表 2  mux_41的Verilog描述 2.1  代码 `timescale 1ns / 1ps // C

初学者使用modelsim仿真成功:1位全加器_simulink设计并实现一位全加器-爱代码爱编程

1.我是用第三方编辑器Gvim编写两个v.文件,一个是源设计文件"adder_2.v",一个是激励文件testbench文件"adder_2_tb.v"。代码如下: 图1 1位全加器设计文件代码 图2 1位全加器激励文件代码(testbench文件) 2.双击打开Modelsim软件,【File】--【New】--【Project】,

verilog 数据转换器(2)通过时钟分频倍频实现数据位宽转换-爱代码爱编程

#学习记录# 推荐阅读:数字前端-数据转换器(1)通过时钟分频与倍频实现数据位宽转换-CSDN博客 1  由宽到窄数据转换 1.1 代码 `timescale 1ns / 1ps // // Company: // Engineer: Mr-pn-junction // // Create Date: 2023/11/07 13:50:01 /

数字设计-爱代码爱编程

#学习记录# 数字设计-格雷码编码/解码(1)-CSDN博客 1  二进制码转化为格雷编码   二进制转化为格雷码的规则如图1、图2所示。 图1  二进制转格雷码公式 图2  二进制码转格雷码图示 1.1  代码 `timescale 1ns / 1ps // // Company: // Engineer: Mr-pn-junct

有限状态机fsm的verilog描述_本关任务:用verilog描述如下状态图所示的状态机,在右侧代码窗口中补充程序代码并-爱代码爱编程

状态机中主要包含三个对象: -现态 current state CS -次态 next state NS -输出逻辑 out logic OL 描述方式: ①三段式描述:CS、NS、OL各自采用一个always语句块描述。

hdlbits: lemmings2-爱代码爱编程

苦思冥想怎么把FALLING下落的逻辑加进去,下落是状态吗?好像是,因为人物状态就是这三种:LEFT、RIGHT、FALLING,但又好像不是,因为FALLING的时候还要“记住”之前是LEFT还是RIGHT。苦思冥想不知道怎么加进去。于是写出了下面的代码,当ground和bump_left/bump_right同时为1时会报错: module top_

verilog零基础入门(边看边练与测试仿真)-爱代码爱编程

文章目录 第七讲第八讲第九讲第十讲 第七讲 1、最简单的状态机-三角波发生器 1、两种状态的代码: //最简单的状态机,三角波发生器; `timescale 1ns/10ps module t

verilog零基础入门(边看边练与测试仿真)-爱代码爱编程

文章目录 第四讲第五讲第六讲 第四讲 1、计数器 代码: //计数器 `timescale 1ns/10ps module counter( clk, res,