FPGA verilog实现键控数码管动态显示 急啊!!
模块化(D2 ,D3 ,Q,COM,启用,CLK); Reg [3 ,0] com; Reg [7 :0] Q; Reg [3 ,0] DN; reg [po 0]始终 @(po 0] sedgeclk)开始在友晶科技DE10-Standard开发板上实现8051单片机(也适用于DE1-SOC)
本文介绍了如何基于FPGA开发委员会的(8 )Li MicroController设计到Yojing Technology的DE1 0-FAG开发委员会,该委员会也适用于DE1 -SOC。首先,您需要在FPGA中配置LI软核,并使用Oreganosystems.at提供的开源(8 )LI内核,其源代码位于Tibus Project SRC文件夹中。
接下来,添加ROM,RAM和RAMX组件,ROM是程序.HEX文件的数量,RAM是运行程序。
完整的(8 )LI微控制器IP框图可以在Oreeganosystems.at网站上获得。
迁移过程主要包括第五个设备类型,修改设备设置ROM,RAM和RAMX以及添加和配置PLLIP。
需要根据DE1 0-FLAG的特性来调整数字管和键信号,以使数字管和有效状态键的水平更亮。
针省根据DE1 0标准手册工作,需要将销钉放在Virtualpin上。
完成所有修改后,请使用第四个撰写.sof文件并在.hex文件中编译1 00个代码。
在第四个中,请使用内系统符号符号配置USBBLSUR端口DE1 0-FLAG,选择正确的设备,然后导入.hex文件以进行FPGA配置。
如果正常显示光和数字管,则将其翻译成快乐。
可以在文章末尾找到相关项目的下载地址。
Verilog通过文件去定义管脚?
当您使用其他人的项目时,备份FPGA PIN津贴文件的方法,有时找不到PIN文件,但是它可以保存其已链接的引脚并将其取出。方法1 :检查引脚的绑定情况,Quartus-> sistionment->引脚,打开FPGA引脚接口。
步骤:file->导出… - >选择保存名称和记录格式。
方法2 :可以以QSF格式保存和配置直接输出引脚的配置,tissionmergt-> exportasignMegt。
注意:在录制期间,将在原始项目的文件中创建一个新文件。
至于其他组件配置方法,您可以使用QSF文件和TCL文件中的指令,也可以在“ sigistment->设备接口”中定义它们。
加载:使用现有的PIN文件时,可以选择PIN文件以加载在可选分配 - >“ eximentasignment”中。
当前,可以加载QSF和CSV文件(或TXT)。
保存的CSV文件(TXT),QSF文件和TCL文件之间的差异:CSV文件(TXT):包含芯片的所有PIN,包括允许的文件,而不是分配; 仅有关分配的主轴的信息。
最终摘要的最重要点是必须定义未使用的io的状态:分配>>设备>>选择DeviceAndpines选项>> unuseseandpin >> tri -state set set(软件参数有许多选项)并重新编译然后下载,其他未使用的iOS将没有其他不可预测的条件(我没有配置 以前,因此,当我使用开发表时,IO数字管显然没有强制地照亮所有> = <)。
宏的定义定义使用指定的标识符(即名称)代表链条。
而不是链。
此方法允许用户用简单的名称或重要名称而不是显着性数字和符号替换长链。
预处理汇编称为“宏扩展”。
`定义是宏定义命令。
[示例1 ]:`定义wordsize8 modulereg data [1 :`wordsize); 它可以用很小的字母。
建议使用大写字母将它们与变量的名称区分开。
2 )`定义命令可能出现在模块的定义中,也可以出现在模块的定义之外。
宏名称的有效海滩在定义命令后处于原始文件的末尾。
通常,`define命令是在模块的定义中分开的,并且在程序框架内在此程序中有效。
3 )当您引用定义的宏名称时,“`”符号必须先于宏的名称,以表明名称是定义的宏名称。
4 )使用宏名称而不是链条可以减少程序中某些频道的写作工作量。
此外,记住一个宏观名称要比记住一个不规则的链条要容易得多,这样您就可以在阅读程序时立即知道其含义。
全部。
如示例1 所示,首先定义要表示常数8 的单词,而来自寄存器的数据为8 位寄存器。
如果您需要更改注册表的大小,只需将命令行更改为:`seet Wordsize1 6 即可。
通过这种方式,注册表数据成为1 6 位注册。
我们可以看到,宏观分化的使用可以提高程序的可移植性和可读性。
5 )a宏的定义是用宏名称代替链,也就是说,在不验证语法的情况下进行简单的替换。
无论含义是否正确,它将始终在预处理期间替换。
仅当宏扩展的源程序编译时,才会报告错误。
6 )宏的定义不是VerilogHDL指令,因此无需在线路末端添加半隆。
如果添加了半隆,则将共同替换分号。
例如:[示例2 ]:模块测试; 扩展,指令为:分配输出= a + b + c + d; + e; 7 )定义宏时,您可以参考定义的宏名称,并可以通过一层替换。
例如:[示例3 ]:ModuleTest; Reg A,B,C; 电线; `definedaaa + b`defineccc +`aaAssignout =`cc; ; 8 )必须在同一行中声明宏观和宏观。
如果宏观中有评论行,则评论行将不会用作替换的。
例如:[示例4 ]。
当引用此宏名称时,不会更换。
注意:构成宏观的链不能被以下标记分开。
评论线关键字用于确认数字链双筒望远镜和三角运算符(例如宏观定义)是非法的。
`定义first_half“ startofstring $ poster(`pre mier_halfendofostring''); 名称,您将在那里发生冲突,因此不建议使用与预处理控制名称相同的宏名称。
2 )宏名称可以是普通标识符(可变名称)。
例如,signal_name和'signal_name含义是不同的。
但是,这很容易引起混乱,因此建议不要这样使用。
共阴极数码管表
在电子设备中,通用阴极数字管是一种常见的显示方法,并且共同的末端连接到阴极,因此高水平可以揭示该段落。例如,要显示数字0,ABCDEFG值必须设置为01 1 00000。
在这里,ABCDEFG将数字管的每个段表示为A,第一个段B代表第二段,等等。
编程取决于使用的微控制器。
例如,如果您使用5 1 个微控制器,则可以使用BIT工作来控制数字管。
具体来说,您可以通过单独设置两个输出来点亮段落。
在这里,“两个位”是指可以通过位工作有效实现的两个段落。
如果使用FPGA(现场可编程门数组),则可以直接以与01 1 00000B相同的二进制形式设置ABCDEFG的值。
此方法无需通过更直接和复杂的编程逻辑来实现。
值得注意的是,在实际应用中,应考虑数字管的连接和数字范围。
例如,典型的阴极数字管通常用于显示一个简单的字符,例如0到9 ,以及简单的字符,例如小数点。
通过合理设置ABCDEFG,您可以实现其他显示效果。
您也可以直接通过I/O接口运行,也可以使用特定的显示驱动程序芯片来控制通常的阴极数字管。
此方法可以简化编程并提高显示稳定性。
简而言之,有许多用于通用阴极数字管的控制方法,某些实现取决于硬件平台和应用程序要求。
您可以实现有效的显示控制,无论是工作还是设置二进制。