Verilog程序(汉字点阵显示

合集下载

中文版VerilogHDL简明教程

中文版VerilogHDL简明教程

Verilog HDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。

被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。

数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。

Verilog HDL 语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。

所有这些都使用同一种建模语言。

此外,Verilog HDL 语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。

Verilog HDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。

因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。

语言从C编程语言中继承了多种操作符和结构。

Verilog HDL提供了扩展的建模能力,其中许多扩展最初很难理解。

但是,Verilog HDL语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。

当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。

历史Verilog HDL语言最初是于1983年由Gateway Design Automation公司为其模拟器产品开发的硬件建模语言。

那时它只是一种专用语言。

由于他们的模拟、仿真器产品的广泛使用,Verilog HDL 作为一种便于使用且实用的语言逐渐为众多设计者所接受。

在一次努力增加语言普及性的活动中,Verilog HDL语言于1990年被推向公众领域。

Open Verilog International (OVI)是促进Verilog发展的国际性组织。

1992年,OVI决定致力于推广Verilog OVI标准成为IEEE标准。

这一努力最后获得成功,Verilog 语言于1995年成为IEEE标准,称为IEEE Std 1364-1995。

ultraedit verilog语法

ultraedit verilog语法

UltraEdit Verilog 语法Verilog 是一种硬件描述语言,用于描述数字电路。

UltraEdit 是一种文本编辑器,具有强大的功能和可扩展性,可以方便地编辑 Verilog 代码,并且支持 Verilog 语法的高亮显示和自动补全。

本文将介绍UltraEdit Verilog 语法的相关内容,帮助您更好地使用 UltraEdit 编辑 Verilog 代码。

一、UltraEdit 简介UltraEdit 是一款功能强大的文本编辑器,拥有诸多专业编辑功能和便捷操作,广泛用于软件开发、全球信息站编程等领域。

UltraEdit 具有多窗口编辑、语法高亮、代码折叠、自动补全、宏录制等功能,使得编辑效率大大提升。

二、Verilog 简介Verilog 是硬件描述语言(HDL)之一,用于描述数字电路。

Verilog 可以描述数电路的结构、行为和时序等方面,被广泛应用于数字电路设计和验证领域。

Verilog 代码可以使用文本编辑器进行编写,而UltraEdit 提供了 Verilog 语法高亮显示和自动补全等功能,大大方便了 Verilog 代码的编辑和维护。

三、UltraEdit Verilog 语法高亮UltraEdit 对 Verilog 语法有良好的支持,可以进行语法高亮显示,使得 Verilog 代码更加易读和易于理解。

在 UltraEdit 中编辑 Verilog 代码时,不同的关键字、操作符、注释等都会以不同的颜色进行显示,方便用户区分和识别。

四、UltraEdit Verilog 语法自动补全在编辑 Verilog 代码时,UltraEdit 还提供了 Verilog 语法的自动补全功能,可以快速输入 Verilog 代码,提高编码效率。

当输入关键字或操作符时,UltraEdit 会自动提示可能的补全选项,用户可以通过键盘方向键或鼠标进行选择,从而快速完成代码输入。

五、UltraEdit Verilog 代码折叠UltraEdit 可以对 Verilog 代码进行折叠显示,将代码块进行折叠,使得代码结构更加清晰,方便用户查看和编辑。

Verilog中的一些语法和技巧

Verilog中的一些语法和技巧

Verilog中的⼀些语法和技巧1、.2、.3、Reg型的数据类型默认初始值为X。

reg型数据可以赋正值也可以赋负值,但是当⼀个reg型数据是⼀个表达式的操作数的时候,他的值被当做⽆符号数及正值。

4、在数据类型中?和Z均表⽰⾼阻态。

5、Reg型只表⽰被定义的信号将⽤在“always”模块内,并不是说reg型⼀定是寄存器或触发器的输出。

虽然reg型信号常常是寄存器或触发器的输出但是并不⼀定总是这样。

6、Verilog语⾔中没有多维数组的存在。

Memory型数据类型是通过扩展reg型数据的弟⼦和范围来⽣成的。

其格式如下reg[n-1:0]存储器名[m-1:0];7、在除法和取余的运算中结果的符号和第⼀个操作数的符号位是相同的。

8、不同长度的数据进⾏运算:两个长度不同的数据进⾏位运算时,系统会⾃动地将两者按有端对齐,位数少的操作数会在相应的⾼位⽤0填满以便连个操作数安慰进⾏操作。

9、= = =与!= = =和= =与!= =的区别:后者称为逻辑等是运算符,其结果是2个操作数的值决定的。

由于操作书中某些位可能不定值x和⾼阻态z结果可能是不定值x。

⽽ = = =和!= = =运算符对操作数的⽐较时对某些位的⾼阻态z和不定值x也进⾏⽐较,两个操作数必须完全⼀致,其结果才是1,否则是0.10、⾮阻塞和阻塞赋值⽅式:⾮阻塞赋值⽅式(如a<=b)上⾯语句所赋得变量值不能⽴即被下⾯语句所⽤,(2)快结束后才能完成这次赋值操作 3在编写克综合的时序逻辑模块时这是最常⽤的赋值⽅法。

阻塞赋值(如a=b)赋值语句执⾏完后,块才结束 2 b的值在赋值语句完成后⽴即执⾏ 3在时序逻辑使⽤中,可能产⽣意想不到的结果。

11、模块的描述⽅式:(RTL为寄存器传输级描述)“(1)数据流描述⽅式:数据流⾏描述主要⽤来描述组合功能,具体⽤“assign”连续赋值语句来实现。

分为两种a、显式连续赋值语句;连线型变量类型[连线型变量为快]连线型变量名Assign #(延时量)连线型变量名=赋值表达式;显式连续赋值语句包含了两条语句;第⼀条是对连线型变量的进⾏类型说明的说明语句;第⼆句是对这个已得到声明的连线型变量进⾏连续赋值语句。

verilog-矩阵键盘

verilog-矩阵键盘

二、矩阵键盘显示电路设计(显示键盘值的平方)矩阵键盘显示电路的设计一、实验目的1、了解普通4×4 键盘扫描的原理。

2、进一步加深七段码管显示过程的理解。

3、了解对输入/输出端口的定义方法。

二、实验原理实现键盘有两种方案:一是采用现有的一些芯片实现键盘扫描;再就是用软件实现键盘扫描。

作为一个嵌入系统设计人员,总是会关心产品成本。

目前有很多芯片可以用来实现键盘扫描,但是键盘扫描的软件实现方法有助于缩减一个系统的重复开发成本,且只需要很少的CPU 开销。

嵌入式控制器的功能能强,可能充分利用这一资源,这里就介绍一下软键盘的实现方案。

图10-1 简单键盘电路通常在一个键盘中使用了一个瞬时接触开关,并且用如图10-1 所示的简单电路,微处理器可以容易地检测到闭合。

当开关打开时,通过处理器的 I/O 口的一个上拉电阻提供逻辑1;当开关闭合时,处理器的/IO口的输入将被拉低得到逻辑0。

可遗憾的是,开关并不完善,因为当它们被按下或者被释放时,并不能够产生一个明确的 1或者 0。

尽管触点可能看起来稳定而且很快地闭合,但与微处理器快速的运行速度相比,这种动作是比较慢的。

当触点闭合时,其弹起就像一个球。

弹起效果将产生如图10-2所示的好几个脉冲。

弹起的持续时间通常将维持在 5ms∼30ms 之间。

如果需要多个键,则可以将每个开关连接到微处理器上它自己的输入端口。

然而,当开关的数目增加时,这种方法将很快使用完所有的输入端口。

图10-2 按键抖动键盘上阵列这些开关最有效的方法(当需要5个以上的键时)就形成了一个如图10-3 所示的二维矩阵。

当行和列的数目一样多时,也就是方型的矩阵,将产生一个最优化的布列方式(I/O 端被连接的时候),一个瞬时接触开关(按钮)放置在每一行与线一列的交叉点。

矩阵所需的键的数目显然根据应用程序而不同。

每一行由一个输出端口的一位驱动,而每一列由一个电阻器上拉且供给输入端口一位。

图10-3 矩阵键盘键盘扫描的实现过程如下:对于4×4键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出4行为高电平,然后输出4列为低电平,在读入输出的4行的值,通常高电平会被低电平拉低,如果读入的 4 行均为高电平,那么肯定没有按键按下,否则,如果读入的4 行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。

vhdl实验报告_16乘16点阵_列选_显示

vhdl实验报告_16乘16点阵_列选_显示

综合实践总结报告综合实践名称: EDA技术与实践综合实践地点、时间一.题目功能分析和设计实验的要求有如下三点:1.用16*16点阵的发光二极管显示字符;2.可显示字符为0~9的数字字符与A~F英文字母的大写;3.输入为四位二进制矢量;按照要求可知,LED点阵模块,共由16×16=256个LED发光二极管组成,如何在该点阵模块上显示数字和字母是本实验的关键。

先将要显示的每一幅图像画在一个16×16共256个小方格的矩形框中,再在有笔划下落处的小方格里填上“1”,无笔划处填上“0”,这样就形成了与这个汉字所对应的二进制数据在该矩形框上的分布以数字8为例,点阵分布为:0000000000000000000000000000000000011111111110000001111111111000000110000001100000011000000110000001100000011000000111111111100000011111111110000001100000011000000110000001100000011000000110000001111111111000000111111111100000000000000000000000000000000000考虑到实际物理实验平台上点阵发光二极管的原理,以下为16×16点阵LED外观图,只要其对应的X、Y轴顺向偏压,即可使LED 发亮。

例如如果想使左上角LED点亮,则Y0=1,X0=0即可。

所以我采用行列扫描的方法,用四位二进制数做列选信号(总共16列),如选中第一列,则扫描第一列之中哪些行是高电平(1),哪些行是低电平(0);为高电平的则点亮,为低电平的不亮。

(列信号都接地)。

如此,列选信号由“0000”变到“1111”时,16列扫描完毕,一个字也就出来了,列选信号重新由“0000”开始扫描。

注意扫描频率必须要足够快,才能保证显示一个数字或字母时所有灯在肉眼看来是同时在闪烁的。

汉字点阵显示VHDL源程序

汉字点阵显示VHDL源程序

汉字点阵显示VHDL源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity hzxs isport(clk1,clk2:in std_logic;rd:out std_logic;we: out std_logic;ledw:out std_logic_vector(2 downto 0); d:out std_logic_vector(0 downto 7));end hzxs;architecture hav of hzxs issignal count:std_logic_vector(0 to 2);signal a: std_logic_vector(3 downto 0);beginprocess(clk2)beginif clk2'event and clk2='1' thencount<=count+1;end if;ledw<=count;a(2 downto 0)<=count;end process;process(clk1)beginif clk1'event and clk1='1' thena(3)<=not a(3);end if;end process;process(a)begincase a iswhen"0000"=>d<="10110100";--数when"0001"=>d<="11111111"; when"0010"=>d<="01001010"; when"0011"=>d<="11011010"; when"0100"=>d<="11110110"; when"0101"=>d<="11100110"; when"0110"=>d<="01110110"; when"0111"=>d<="11011011"; when"1000"=>d<="00010000";--字when"1001"=>d<="11111111";when"1010"=>d<="11111101"; when"1011"=>d<="00001100"; when"1100"=>d<="11111111"; when"1101"=>d<="00010000"; when"1110"=>d<="00010000"; when"1111"=>d<="00001100";when others=>d<="00000000";end case;end process;rd<='1';we<='0';end hav;数字抢答器VHDL源程序1)抢答器QDQlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity qdq isport(clr:in std_logic;a,b,c,d:in std_logic;an,bn,cn,dn:out std_logic);end qdq;architecture hav of qdq issignal ss:std_logic_vector(0 to 3);beginss<=a&b&c&d;process(clr,a,b,c,d)beginif clr='1' thencase ss iswhen "1000"=>an<='1';bn<='0';cn<='0';dn<='0'; when "0100"=>an<='0';bn<='1';cn<='0';dn<='0'; when "0010"=>an<='0';bn<='0';cn<='1';dn<='0'; when "0001"=>an<='0';bn<='0';cn<='0';dn<='1'; when others=>an<='0';bn<='0';cn<='0';dn<='0'; end case;elsif clr='0' thenan<='0';bn<='0';cn<='0';dn<='0';end if;end process;end hav;2)计分器JFQlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity jfq isport(en1:in std_logic;clk3:in std_logic;bs:out std_logic_vector(3 downto 0);ss:out std_logic_vector(3 downto 0);gs:out std_logic_vector(3 downto 0);add:in std_logic;dec:in std_logic);end jfq;architecture hav of jfq isbeginprocess(clk3,en1,add,dec)variable ssw:std_logic_vector(3 downto 0); variable bsw:std_logic_vector(3 downto 0); beginbsw:="0001";if clk3='1' and clk3'event thenif en1='1' thenif add='1' thenif ssw="1001" thenbsw:=bsw+1;ssw:="0000";elsessw:=ssw+1;end if;elsif dec='1' thenif ssw="1111" thenbsw:=bsw-1;ssw:="1001";elsessw:=ssw-1;end if;end if;end if;end if;ss<=ssw;bs<=bsw;gs<="0000";end process;end hav;3) 选择器XZQlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity xzq isport( a1,b1:in std_logic;abw:in std_logic_vector(0 to 3);asw:in std_logic_vector(0 to 3);agw:in std_logic_vector(0 to 3);bbw:in std_logic_vector(0 to 3);bsw:in std_logic_vector(0 to 3);bgw:in std_logic_vector(0 to 3);obw:out std_logic_vector(0 to 3);osw:out std_logic_vector(0 to 3);ogw:out std_logic_vector(0 to 3)); end xzq;architecture hav of xzq isbeginprocess(a1,b1)beginif a1='1' and b1='0' thenobw<=abw;osw<=asw;ogw<=agw;elsif a1='0' and b1='1' thenobw<=bbw;osw<=bsw;ogw<=bgw;end if;end process;end hav;4)译码器YMQlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity ymq isport( clk2:in std_logic;bw:in std_logic_vector(3 downto 0);sw:in std_logic_vector(3 downto 0);gw:in std_logic_vector(3 downto 0);y:out std_logic_vector(7 downto 0);ledw:out std_logic_vector(2 downto 0)); end ymq;architecture hav of ymq issignal knum:std_logic_vector(3 downto 0); signal count:std_logic_vector(2 downto 0); beginprocess(clk2)beginif clk2'event and clk2='1' thenif count<2 thencount<=count+1;elsecount<="000";end if;end if;end process;ledw<=count;knum<=gw when count=0 elsesw when count=1 elsebw when count=2 ;y<="00111111" when knum="0000" else "00000110" when knum="0001" else"01011011" when knum="0010" else"01001111" when knum="0011" else"01100110" when knum="0100" else"01101101" when knum="0101" else"01111101" when knum="0110" else"00000111" when knum="0111" else"01111111" when knum="1000" else"01101111" when knum="1001" else"00000000" ;end hav;。

基于FPGA的点阵汉字显示

基于FPGA的点阵汉字显示

FPGA综合设计实验报告题目 16×16点阵汉字显示作者徐双健专业微电子0902 日期 2013年4月1号第一章前言 (3)1.1本设计的研究背景和研究目的 (3)1.2LED点阵显示特点 (3)1.3FPGA设计的特点 (3)第二章系统设计 (5)2.1设计任务与要求 (5)2.1.2设计要求 (5)2.2设计原理 (5)2.2.1总体设计方案 (5)2.3扫描控制模块2.3.1LED的显示原理 (5)2.4方案一: (6)此法太过麻烦! (18)2.5方案二 (19)2.5.1汉字的存储 (19)2.5.1汉字显示 (21)第三章系统调试与仿真 (24)3.1开发环境介绍 (24)3.2调试与仿真 (24)3.2.1 创建工程 (24)3.2.2 编译前设置 (24)3.2.3 全程编译 (26)3.2.4时序仿真 (27)第四章结束语 (29)答谢辞...............................................................错误!未定义书签。

第一章前言1.1 本设计的研究背景和研究目的鉴于LED的自身优势,主要应用于以下几大方面:∙显示屏、交通讯号显示光源的应用LED灯具有抗震耐冲击、光响应速度快、省电和寿命长等特点,广泛应用于各种室内、户外显示屏,分为全色、双色和单色显示屏,全国共有100多个单位在开发生产。

交通信号灯主要用超高亮度红、绿、黄色LED,因为采用LED信号灯既节能,可靠性又高,所以在全国范围内,交通信号灯正在逐步更新换代,而且推广速度快,市场需求量很大,是个很好的市场机会。

∙汽车工业上的应用汽车用灯包含汽车内部的仪表板、音响指示灯、开关的背光源、阅读灯和外部的刹车灯、尾灯、侧灯以及头灯等。

汽车用白炽灯不耐震动撞击、易损坏、寿命短,需要经常更换。

1987年,我国开始在汽车上安装LED高位刹车灯。

由于LED响应速度快,可以及早提醒司机刹车,减少汽车追尾事故,在发达国家,使用LED制造的中央后置高位刹车灯已成为汽车的标准件,美国HP公司在1996年推出的LED汽车尾灯模组可以随意组合成各种汽车尾灯。

verilog知识点总结

verilog知识点总结

verilog知识点总结Verilog是一种硬件描述语言(HDL),用于描述数字电路和系统,它广泛应用于数字系统设计和仿真领域。

本文将总结一些Verilog 的重要知识点,以帮助读者更好地理解和应用Verilog。

一、Verilog的基本语法Verilog的基本语法包括模块声明、端口声明、信号声明、数据类型、运算符等。

Verilog中的模块是设计的基本单元,模块声明包括模块名和端口声明。

端口可以是输入、输出或双向的。

信号声明用于定义内部信号,可以是寄存器或线网类型。

Verilog支持多种数据类型,包括整数、浮点数、向量、数组等。

Verilog还提供了丰富的运算符,包括算术运算符、逻辑运算符、位运算符等。

二、组合逻辑电路描述Verilog可以用来描述各种组合逻辑电路,如与门、或门、非门等。

通过使用逻辑运算符和条件语句,可以很方便地描述组合逻辑电路的功能。

Verilog还提供了多种语法结构,如if语句、case语句等,用于描述复杂的逻辑功能。

三、时序逻辑电路描述时序逻辑电路是一种带有状态的电路,Verilog可以用来描述各种时序逻辑电路,如触发器、计数器、状态机等。

通过使用时钟信号和触发器,可以实现电路的时序行为。

Verilog提供了多种触发器类型,如D触发器、JK触发器、T触发器等,可以根据实际需求选择合适的触发器类型。

四、模块实例化和层次化设计Verilog支持模块的实例化和层次化设计,可以将一个模块实例化为另一个模块的一部分。

通过模块实例化,可以方便地实现模块的复用和层次化设计。

层次化设计可以使整个系统更加清晰和模块化,方便调试和维护。

五、仿真和验证Verilog可以用于对设计进行仿真和验证,以确保设计的正确性。

Verilog提供了仿真器,可以对设计进行时序仿真和波形查看。

通过仿真,可以验证设计的功能和时序行为是否符合要求。

Verilog 还支持测试向量的生成和自动验证,可以自动生成测试向量并进行自动验证。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中国石油大学数电课程设计报告题目:学院:班级:姓名:学号:日期: 2012 年 12月摘要设计要求:利用EDA/SOPC 实验开发平台提供的16*16点阵LED以及EPC235核心板,实现循环显示“中国石油大学”这6个汉字(左移或者右移均可)。

(1)手动生成“中国石油大学”这6个汉字在16*16点阵LED 上的6个字模(即控制某些LED亮,某些LED灭)。

(2)实现循环显示“中国石油大学”这6个汉字(左移或者右移均可)。

(3)拓展要求:自主设计(如控制循环速度,方向)。

关键词:扫描分频,控制速度,点阵,点阵汉字显示,设计原理及方案:1、16*16点阵LED内部结构如下图所示。

2、总体设计框图:3、各子模块的设计:(1)、分频,扫描:module fenpin (clk_50Mhz,clk_4hz,k2,k3);input clk_50Mhz,k2,k3; // 输入端口声明output clk_4hz; // 输出端口声明reg[24:0] count,ccount;reg clk_4hz;always @(posedge clk_50Mhz)beginif ((k2==0) && (k3==0))ccount<=500000000;if ((k2==0) && (k3==1))ccount<=100000000;if ((k2==1) && (k3==0))ccount<=50000000;if ((k2==1) && (k3==1))ccount<=10000000;if(count<ccount)begincount<=count+1'b1;clk_4hz<=0;endelsebegincount<=0;clk_4hz<=1;endendendmodule生成模块:(2)扫描,控制速度:module sudu(clk,cnt);input clk;output cnt;reg cnt;reg[15:0] p;always@(posedge clk)beginif(p==16'b1111111111111111)begincnt<=1'b1;p<=16'b0000000000000000;endelsebeginp<=p+16'b1;cnt<=1'b0;endendendmodule生成模块:(3)显示汉字模块:module xianshi(clk2,clk3,row,con,k); input clk2,clk3,k;output[15:0] row;output[15:0] con;reg[15:0] row;reg[15:0] con;integer cnt,b;reg[15:0] r[111:0];initialbegin// 中r[0]<=16'b 1111111111111111;r[1]<=16'b 1111111111111111;r[2]<=16'b 1111100000011111;r[3]<=16'b 1111101111011111;r[4]<=16'b 1111101111011111;r[5]<=16'b 1111101111011111;r[6]<=16'b 1111101111011111;r[7]<=16'b 1000000000000001;r[8]<=16'b 1111101111011111;r[9]<=16'b 1111101111011111;r[10] <=16'b 1111101111011111; r[11] <=16'b 1111101111011111; r[12] <=16'b 1111100000011111; r[13] <=16'b 1111111111111111; r[14] <=16'b 1111111111111111; r[15] <=16'b 1111111111111111;// 国r[16] <=16'b 1111111111111111;r[18] <=16'b 1100000000000111; r[19] <=16'b 1101111111110111; r[20] <=16'b 1101011011010111; r[21] <=16'b 1101011011010111; r[22] <=16'b 1101011011010111; r[23] <=16'b 1101000000010111; r[24] <=16'b 1101011011010111; r[25] <=16'b 1101011011010111; r[26] <=16'b 1101001011010111; r[27] <=16'b 1101011011010111; r[28] <=16'b 1101111111110111; r[29] <=16'b 1100000000000111; r[30] <=16'b 1111111111111111; r[31] <=16'b 1111111111111111;// 石r[32] <=16'b 1111111111111111; r[33] <=16'b 1111111111111111; r[34] <=16'b 1110111111110111; r[35] <=16'b 1111011111110111;r[37] <=16'b 1111110111110111; r[38] <=16'b 1110100001110111; r[39] <=16'b 1110111100110111; r[40] <=16'b 1110111101010111; r[41] <=16'b 1110111101100111; r[42] <=16'b 1110111101100111; r[43] <=16'b 1110000001110111; r[44] <=16'b 1111111111110111; r[45] <=16'b 1111111111110111; r[46] <=16'b 1111111111111111; r[47] <=16'b 1111111111111111;// 油r[48] <=16'b 1111111111111111; r[49] <=16'b 1111111111111111; r[50] <=16'b 1111111011101111; r[51] <=16'b 1000000111011111; r[52] <=16'b 1111101110111111; r[53] <=16'b 1111111111111111; r[54] <=16'b 1100000001111111;r[56] <=16'b 1101101101111111; r[57] <=16'b 1100000000000111; r[58] <=16'b 1101101101111111; r[59] <=16'b 1101101101111111; r[60] <=16'b 1100000001111111; r[61] <=16'b 1111111111111111; r[62] <=16'b 1111111111111111; r[63] <=16'b 1111111111111111;// 大r[64] <=16'b 1111111111111111; r[65] <=16'b 1101111111111111; r[66] <=16'b 1110111111111111; r[67] <=16'b 1110111110111111; r[68] <=16'b 1111011110111111; r[69] <=16'b 1111101110111111; r[70] <=16'b 1111110010111111; r[71] <=16'b 1111111100001111; r[72] <=16'b 1111110010111111; r[73] <=16'b 1111101110111111;r[75] <=16'b 1110111110111111; r[76] <=16'b 1110111111111111; r[77] <=16'b 1101111111111111; r[78] <=16'b 1111111111111111; r[79] <=16'b 1111111111111111;// 学r[80] <=16'b 1111111111111111; r[81] <=16'b 1111111111111111; r[82] <=16'b 1111111101111111; r[83] <=16'b 1111011110111111; r[84] <=16'b 1111011111011101; r[85] <=16'b 1111011011010011; r[86] <=16'b 1011011011011101; r[87] <=16'b 1000001011010011; r[88] <=16'b 1111010011011111; r[89] <=16'b 1111011011000111; r[90] <=16'b 1111011111011001; r[91] <=16'b 1111011101011111; r[92] <=16'b 1111111110011111;r[94] <=16'b 1111111111111111; r[95] <=16'b 1111111111111111;// 中r[96] <=16'b 1111111111111111; r[97] <=16'b 1111111111111111; r[98] <=16'b 1111100000011111; r[99] <=16'b 1111101111011111; r[100] <=16'b 1111101111011111; r[101] <=16'b 1111101111011111; r[102] <=16'b 1111101111011111; r[103] <=16'b 1000000000000001; r[104] <=16'b 1111101111011111; r[105] <=16'b 1111101111011111; r[106] <=16'b 1111101111011111; r[107] <=16'b 1111101111011111; r[108] <=16'b 1111100000011111; r[109] <=16'b 1111111111111111; r[110] <=16'b 1111111111111111; r[111] <=16'b 1111111111111111;endalways@(posedge clk3) beginif (k==0)beginif (b==95)b<=0;elseb<=b+1;endelsebeginif (b==0)b<=95;elseb<=b-1;endendalways@(posedge clk2) beginif(cnt==15)begincnt<=0;endelsecnt<=cnt+1;case(cnt)0: con<=16'b0000_0000_0000_0001; 1: con<=16'b0000_0000_0000_0010; 2: con<=16'b0000_0000_0000_0100; 3: con<=16'b0000_0000_0000_1000; 4: con<=16'b0000_0000_0001_0000; 5: con<=16'b0000_0000_0010_0000; 6: con<=16'b0000_0000_0100_0000; 7: con<=16'b0000_0000_1000_0000; 8: con<=16'b0000_0001_0000_0000; 9: con<=16'b0000_0010_0000_0000; 10: con<=16'b0000_0100_0000_0000; 11: con<=16'b0000_1000_0000_0000;12: con<=16'b0001_0000_0000_0000; 13: con<=16'b0010_0000_0000_0000; 14: con<=16'b0100_0000_0000_0000; 15: con<=16'b1000_0000_0000_0000;endcase//行使能if (k==0)begincase(cnt)0: row<=r[b+0];1: row<=r[b+1];2: row<=r[b+2];3: row<=r[b+3];4: row<=r[b+4];5: row<=r[b+5];6: row<=r[b+6];7: row<=r[b+7];8: row<=r[b+8];9: row<=r[b+9];11: row<=r[b+11]; 12: row<=r[b+12]; 13: row<=r[b+13]; 14: row<=r[b+14]; 15: row<=r[b+15];endcaseendelse begincase(cnt)0: row<=r[b-0]; 1: row<=r[b-1]; 2: row<=r[b-2]; 3: row<=r[b-3]; 4: row<=r[b-4]; 5: row<=r[b-5]; 6: row<=r[b-6]; 7: row<=r[b-7]; 8: row<=r[b-8]; 9: row<=r[b-9]; 10: row<=r[b-10]; 11: row<=r[b-11];13: row<=r[b-13];14: row<=r[b-14];15: row<=r[b-15];endcaseendendendmodule生成模块:电路的仿真:分析与总结:这次数点实习我去测试了俩次,第一次测试时,什么现象都没有,我回去后反复检查,程序都没有问题,后来我觉得可能是我生成模块时,全都放在一个文件夹里,混乱了。

相关文档
最新文档