fpga

Verilog IIC通信实验笔记

╄→гoц情女王★ 提交于 2019-12-22 06:33:10
Verilog IIC通信实验笔记 Write by Gianttank 我实验的是 AT24C08的单字节读,单字节写,页读和页写,在高于3.3V系统中他的通信速率最高400KHZ的,我实验里用的是100KHZ的速率。图1是硬件原理图 图1 图2 图2是器件地址,我的原理图是A2接高。 IIC通信协议中要注意的地方: 1. 当时钟线SCL 高电平时,如果把数据线SDA 从高电平拉到低电平,则表示通信开始(START);如果把数据线SDA 从低电平拉到高电平,则表示通信结束(STOP)。SDA数据不变,视为数据采样。 2. 前一个STOP 结束后。与下一个START开始要保证5ms的间隔。 3. 页写有字节限制,而页读没有,可以一次读出所有的数据。 4. SDA信号在FPGA为接受方时要设置为高阻态。 5. 应答信号永远是接收方发送的,这个很重要,我就是卡在这里几天没找到原因。FPGA在读数据的时候,第9个周期是FPGA发低电平给EEPROM的。 图3为RTL视图 图3 引脚定义 信号名称 方向 描述 clk input 50M的主时钟 rst_n input 复位信号 sw1 input 按键1 低电平有效 按下执行字节写 sw2 input 按键2 低电平有效 按下执行字节读 sw3 input 按键3 低电平有效 按下执行 页写 sw4 input 按键4 低电平有效

【连载】 FPGA Verilog HDL 系列实例--------直流电机PWM控制

与世无争的帅哥 提交于 2019-12-22 06:32:57
【连载】 FPGA Verilog HDL 系列实例 Verilog HDL 之 直流电机PWM控制 一、实验前知识准备   在上一篇中总结了步进电机的控制,这次我将学习一下直流电机的控制,首先,我们简要了解下步进电机和直流电机的区别。   (1)步进电机是以步阶方式分段移动,直流电机通常采用连续移动的控制方式。   (2)步进电机采用直接控制方式,它的主要命令和控制变量都是步阶位置;直流电机则是以电机电压为控制变量,以位置或速度为命令变量。   (3)直流电机需要反馈控制系统,他会以间接方式控制电机位置。步进电机系统多半以“开环方式”进行操作。 1、什么是直流电机   输出或输入为直流电能的旋转电机,称为直流电机,它是能实现直流电能和机械能互相转换的电机。当它作电动机运行时是直流电动机,将电能转换为机械能;作发电机运行时是直流发电机,将机械能转换为电能。 2、什么是PWM   PWM(脉冲宽度调制)是一种模拟控制方式,其根据相应载荷的变化来调制晶体管栅极或基极的偏置,来实现开关稳压电源输出晶体管或晶体管导通时间的改变,这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。 3、开发平台中直流电机驱动的实现   开发板中的直流电机的驱动部分如图1.1所示。利用FPGA设计一个0、1组成的双极性PWM发生器。      

【连载】 FPGA Verilog HDL 系列实例--------卡式电话计费器

痴心易碎 提交于 2019-12-22 06:32:23
【连载】 FPGA Verilog HDL 系列实例 Verilog HDL 之 卡式电话计费器   我们每天都在和手机打交道,更熟悉了打电话的各项业务,那么怎么通过Verilog HDL 硬件描述语言简单的控制电话的计时计费呢,下面我们就来看看是如何实现的。先介绍下卡式电话计费器的要求。 一、实验要求及原理 (1) 计费器在话卡插入后,能将卡中的币值读出并显示出来;在通话过程中,根据话务种类计话费并将话费从卡值中扣 除,卡值余额每分钟更新一次;计时与计费数据均以十进制形式显示出来。 (2)话务分为3类:市话、长话和特话,其中市话按每分钟3角钱计费,长话按每分钟6角钱计费,特话不收费。当卡上余额不足时产生告警信号,当告警达到一定时间则切断当前通话。 二、实验平台   Quartus II 7.2 集成开发环境、SOPC-MBoard板、ByteBlaster II 下载电缆 三、实验实现 1、设计思路   此系统由三个模块组成,一是时钟分频模块,负责产生1Hz的时间;二是卡式电话计费主体,负责计时计费,余额不足时,产生警报后自动切断通话信号;三是顶层模块,负责数码管的显示。 2、在设计文件中输入Verilog代码。 (1)时钟分频 View Code 1 //--------------------------------------------------------------

Manipulating 80 bits datatype in C

Deadly 提交于 2019-12-22 04:38:11
问题 I'm implementing some cryptographic algorithm in C which involves an 80 bits key. A particular operation involves a rotate shifting the key x number of bits. I've tried the long double type which if I'm not wrong is 80bits, but that doesn't work with the bitshift operator. The only alternative I can come up with is to use a 10 element char array with some complicated looping and if-else. My question is whether there's some simple and efficient way of carrying this out. Thanks. 回答1: There is

Where can I find a definitive list of the ModelSim error codes?

时间秒杀一切 提交于 2019-12-22 02:26:27
问题 I am running some VHDL through ModelSim. Each error and warning has its own error code (like this: (vcom-1292) Slice range direction "downto" specified in slice with prefix of unknown direction. This is just an example message; I understand what it means. I assume that Mentor has a list of all possible error codes and a more elaborate description of what they mean, and how to avoid them. I did not find this error code in the PDFs that come with ModelSim, nor did I find it through Google. Any

vivado进阶:FPGA实现(一)

馋奶兔 提交于 2019-12-22 01:30:47
中国大学MOOC [UESTC数字设计FPGA应用] 通过实践,进一步掌握硬件描述语言(Verilog HDL)与vivado开发的全过程。在vivado的开发环境下,使用Verilog HDL编译代码。根据原理图和对于端口的说明,编写约束文件,对电路进行实现,并进行仿真,然后下载到电路板验证。 以简单工程多数表决器为例,进行实现。掌握Verilog HDL的基本语言,FPGA的仿真方法,以及开发板的使用方法。 第一个工程:多数表决器 使用FPGA实现简单的组合逻辑电路。 三个输入分别是a,b,c,输出是f。 基本思路: 1、根据问题的描述作出真值表; 2、得到最小项表达式; 3、卡诺图圈图得到逻辑函数的表达式; 4、vivado下新建工程进行开发。 进入工程 小贴士: 1、左侧PROGECT MANAGER(工程管理)中有Settings设置一项,可以对使用的开发板进行修改。 2、在比特流选项中选择-bin.file,是需要最后下载到FPGA配置的Flash。 3、发现自己找不到Sources的小框之后,可以单击左侧栏中的PROGECT MANAGER来找到。 4、界面右上角会显示项目的工作状态。 设计源文件代码 module v_dsbjq ( input a , input b , input c , output f ) ; assign f = a & b | b & c

How to set up Eclipse for FPGA design in VHDL and Verilog)?

青春壹個敷衍的年華 提交于 2019-12-21 12:10:15
问题 I am new with Eclipse, I have used it for SW development and in Altra environment for Nios processor. But now, I have a pretty large project that I have to manage and I would like to use Eclipse to have all the files in the system to make it easier to manage and update. The project has multiple directories for various IPs and has multiple targets for ASCI, Xilinx and Altera FPGAs. In a near future the project will support both NIOS, Microblaze and ARM processors and I would really like to

Reading an image to FPGA from PC and Back

岁酱吖の 提交于 2019-12-21 05:34:28
问题 I need to read a small image (tif format) from PC to FPGA kit (ALTERA DE2-70) for processing, then write it back to PC. I have no idea how to do it in Verilog? Can it be done in C? if so, how can I combine my C/HDL code to work together? Thank you! 回答1: a few mounts ago i were having the same problem, but i wanted to send and receive a real time image. back then i was researching and the best (fast an chip) solution that i find was the XEM6001 of opalkelly. http://www.opalkelly.com/products

FPGA的工艺与原理

痴心易碎 提交于 2019-12-20 19:48:28
CPLD 是可以等价于 GAL 的阵列,编程的数学模型是基于多项式的乘用与门电路实现,而多项式的加用或门电路实现。那么我们 FPGA 的编程机理是什么呢?它为什么能够实现我们任意的函数表达式呢?我们在上一讲已经知道了 FPGA就实现技术是可以分成三种不同 FPGA 的结构特点、实现的机理,这三种 FPGA 分别是基于 SRAM 技术、基于反熔丝技术、基于 E2PROM/FLASH技术。 就电路结构来讲, FPGA 可编程是指三个方面的可编程,一个是可编程逻辑块,一个是可编程 IO,还有一个就是可编程布线资源。可编程逻辑块是 FPGA 可编程的核心,这一节里我们着重就这个方面可编程进行讨论。 1 基于 SRAM 技术原理 1.1 SRAM 与 DRAM 在前面我们提到过,最早出现的 FPGA 是基于 SRAM 技术的,它也是目前发展到现在发展的最快的,所谓走的早,走的路就越长。那么我们讲什么是 SRAM 技术呢?关于这个概念,可能有些初学者是很模糊的。 半导体 RAM 是有动态 RAM 和静态 RAM 之说,就是 DRAM 与 SRAM。 DRAM我们可能接触的更多一点,因为我们如果有自己组装机器或者选购电脑的时候,都会考虑一个内存大小的问题,目前市场上这个内存大部分都是动态的,从开始的 DDR 到 DDR2,再到现在的 DDR3。 DRAM 与 SRAM 的区别在于 DRAM

Verilog, FPGA, use of an unitialized register

自作多情 提交于 2019-12-20 02:34:33
问题 I have a question about what seems to me odd behavior of an AGC/SPI controller I'm working on. It's done in Verilog, targeting a Xilinx Spartan 3e FPGA. The controller is a FSM that relies on external inputs to start. The state of the FSM is stored in state_reg which is not explicitly initialized, as I thought an uninitialized register would default to zero. When I implemented the controller the FSM would not run. Monitoring the SPI bus I observed no activity. To monitor the FSM i routed the