你的问题不是很明确啊, 你的IO指的是什么呢是定义的port么input output inout
如果是类似的问题,
module (input contrb,//控制信号
input contra,contrc,
input a,
inout b,
output wire c,
);
wire temp_a,tb; //用于获得输入a的信号
reg vra,vrb,crc;//数值
reg temp_c,temp_b; //用来临时存储输出的值
assign c=contrctemp_c:'bz;//根据控制信号,如果为1则输出temp_c,如果为0则输出高组态
//高组态相当于断路就是输出C没有被接入电路中,可以理解为通道关闭一般电路上由三态门实现
assign temp_a=contraa:'bz;//一般不会这么做,希望关闭输入一般会在前一级关闭对应的输出
assign b=contrb[1]temp_b:'bz;//如果contrb最高位是1则作为输出,不然则作为输入
always@()begin //你的自定义代码
vra<=temp_a//如果需要用到输入a则读取temp_a的值
end
endmodule
与非门逻辑表达式:Y=(A·B)'=A'+B'
逻辑符号:
或非门有3种逻辑符号,包括:形状特征型符号(ANSI/IEEEStd
91-1984)、IEC矩形国标符号(IEC
60617-12)和DIN符号(DIN
40700),以二输入或门为例,逻辑符号如图所示:
异或门逻辑表达式:
常用逻辑符号如下图所示。对异或门的任何2个信号(输入或输出)同时取反,而不改变结果的逻辑功能。在“圈到圈”的设计中,我们选用最能表达要实现的逻辑功能的符号。
同或门逻辑表达式:(⊙为“同或”运算符)
逻辑门的2种符号:形状特征型符号(ANSI/IEEE Std
91-1984)、IEC矩形国标符号(IEC
60617-12)。
与非门(英语:NAND
gate)是数字电路的一种基本逻辑电路。若当输入均为高电平(1),则输出为低电平(0);若输入中至少有一个为低电平(0),则输出为高电平(1)。与非门可以看作是与门和非门的叠加。
或非门(英语:NOR
gate)是数字逻辑电路中的基本元件,实现逻辑或非功能。有多个输入端,1个输出端,多输入或非门可由2输入或非门和反相器构成。只有当两个输入A和B为低电平(逻辑0)时输出为高电平(逻辑1)。也可以理解为任意输入为高电平(逻辑1),输出为低电平(逻辑0)。
异或门
(英语:Exclusive-OR
gate,简称XOR gate,又称EOR
gate、ExOR
gate)是数字逻辑中实现
逻辑异或的 逻辑门。有多个输入端、1个输出端,多输入异或门可由2输入异或门构成。若两个输入的电平相异,则输出为高电平1;若两个输入的电平相同,则输出为低电平0。亦即,如果两个输入不同,则异或门输出高电平。
同或门(英语:XNORgate或equivalencegate)也称为异或非门,是数字逻辑电路的基本单元,有2个输入端、1个输出端。当2个输入端中有且只有一个是低电平(逻辑0)时,输出为低电平。亦即当输入电平相同时,输出为高电平(逻辑1)。
三态门并不是具有三种逻辑值,高阻态是一种禁止状态。工作状态下,三态门输出可以是“0”或者“1”;在禁止状态下,其输出呈现高阻态,相当于开路
三态门有广泛的应用,利用三态门可以实现线与,也被广泛应用于总线传送。总线传送时,为了保证数据传送的准确性,任意时刻,n个三态门的控制端只能有一个为1,其余均为0,而三态门利用高阻态可以很好的实现这一特性。
EN是英文单词使能Enable。
EN=1时三态门工作,EN=0时,输出Y成高阻态,这时高电平有效。
同理EN上面带一横的是,EN非,低电平有效。
倒三角形是三态门输出门(TSL门)限定符号。
◇是集电极开路门(OC门)的限定符号。
扩展资料:
逻辑电路一般有若干个输入端和一个 或几个输出端,当输入信号之间满足某一特定逻辑关系时,电路就开通,有输 出;否则,电路就关闭,无输出。
主要包括内容有数字电子技术(几种逻辑电路)、门电路基础(半导体特性,分立元件、TTL集成电路CMOS集成门电路)、组合逻辑电路(加法器、编码器、译码器等集成逻辑功能)时序逻辑电路(计数器、寄存器)以及数模和模数转换。
参考资料来源:百度百科-逻辑电路
如何学习FPGA掌握FPGA可以找到一份很好的工作,对于有经验的工作人员,使用FPGA可以让设计变得非常有灵活性。掌握了FPGA设计,单板硬件设计就非常容易(不是系统设计),特别是上大学时如同天书的逻辑时序图,看起来就非常亲切。但FPGA入门却有一定难度,因为它不像软件设计,只要有一台计算机,几乎就可以完成所有的设计。FPGA设计与硬件直接相关,需要实实在在的调试仪器,譬如示波器等。这些硬件设备一般比较昂贵,这就造成一定的入门门槛,新人在入门时遇到一点问题或者困难,由于没有调试设备,无法定位问题,最后可能就会放弃。其实这时如果有人稍微指点一下,这个门槛很容易就过去。我用FPGA做设计很多年了,远达不到精通的境界,只是熟悉使用,在这里把我对FPGA学习步骤理解写出来,仅是作为一个参考,不对的地方,欢迎大家讨论和指正。
FPGA学习步骤1、工欲善其事,必先利其器
计算机必不可少。目前FPGA应用较多的是Altera和xilinx这两个公司,可以选择安装quartusII或者ISE软件。这是必备的软件环境。硬件环境还需要下载器、目标板。虽然有人说没有下载器和目标板也可学习FPGA,但那总是纸上谈兵。这就像谈女朋友,总是嘴上说说,通个电话,连个手都没牵,能说人家是你朋友?虽说搭建硬件环境需要花费,但想想,硬件环境至多几百元钱,你要真的掌握FPGA的设计,起薪比别人都不止高出这么多。这点花费算什么?
FPGA学习步骤2、熟悉verilog语言或者vhdl语言,熟练使用quartusII或者ISE软件
VHDL和verilog各有优点,选择一个,建议选择verilog。熟练使用设计软件,知道怎样编译、仿真、下载等过程。起步阶段不希望报一些培训班,除非你有钱,或者运气好,碰到一个水平高、又想把自己的经验和别人共享的培训老师,不然的话,培训完后总会感觉自己是一个冤大头。入门阶段可以在利用网络资源完成。
FPGA学习步骤3、设计一个小代码,下载到目标板看看结果
此时可以设计一个最简单的程序,譬如点灯。如果灯在闪烁了,表示基本入门了。如果此时能够下载到FPGA外挂的flash,FPGA程序能够从flash启动,表明FPGA的最简单设计你已经成功,可以到下一步。
FPGA学习步骤4、设计稍微复杂的代码,下载到目标板看看结果
可以设计一个UART程序,网上有参考,你要懂RS232协议和FPGA内置的逻辑分析仪。网上下载一个串口调试助手,调试一番,如果通信成功了, 恭喜,水平有提高,进入下一步。
FPGA学习步骤5、设计复杂的代码,下载到目标板看看结果
譬如sdram的程序,网上也有参考,这个设计难度有点大。可用串口来调试sdram,把串口的数据存储到sdram,然后读回,如果成功,那你就比较熟悉FPGA设计了。
FPGA学习步骤6、设计高速接口,譬如ddr2或者高速串行接口
这要对FPGA的物理特性非常了解,而且要懂得是时序约束等设计方法,要看大量的原厂文档,这部分成功了,那就对FPGA的物理接口掌握很深,你就是设计高手了。
FPGA学习步骤7、设计一个复杂的协议
譬如USB、PCI Express、图像编解码等,锻炼对系统的整体把握和逻辑划分。完成这些,你就是一个一流的高手。
FPGA学习步骤8、学习再学习
学习什么,我也不知道,我只知道“学无止境,山外有山”。
现在很多FPGA工程师,没找到合适,我觉得很多人从开始的时候就误入歧途了,对新手学习FPGA设计我也说一点看法吧。我认为要从基础开始做,基础牢,才有成为高手的可能。
我觉得FPGA学习有以下几步必须要走:
第一步:学习、了解FPGA结构,FPGA到底是什么东西,芯片里面有什么,不要开始就拿个开发板照着别人的东西去编程。很多开发板的程序写的很烂,我也做过一段时间的开发板设计,我觉得很大程度上,开发板在误人子弟。不过原厂提供的正品开发板,代码很优秀的,可以借鉴。只有了解了FPGA内部的结构才能明白为什么写Verilog和写C整体思路是不一样的。
第二步:掌握FPGA设计的流程。了解每一步在做什么,为什么要那么做?很多人都是不就那几步吗,有什么奇怪的?呵呵,我想至少有一半以上的人不知道synthesize和traslate的区别吧。
了解了FPGA的结构和设计流程才有可能知道怎么去优化设计、提高速度、减少资源。不要急躁,不要去在为选择什么语言和选择哪个公司的芯片上下功夫。语言只是一个表达的方式,重要的是你的思维,没有一个好的指导思想,语言用得再好,不过是个懂语言的人。
第三步:开始学习代码了。我建议要学代码的人都去Altera或Xilinx的网站上下原厂工程师的代码学习。不要一开始就走入误区。
第四步:template很重要。能不能高效利用FPGA资源,一是了解fpga结构,二是了解欲实现的逻辑功能和基本机构,三是使用正确的模板。FPGA内部器件种类相对较单一,用好模板,你的逻辑才能被高效的综合成FPGA擅长表达的结构。
做FPGA主要是要有电路的思想,作为初学者,往往对器件可能不是熟悉,那么应该对于数字电路的知识很熟悉吧,FPGA是由触发器和查找表以及互联线等基本结构组成的,其实在我们的代码里面能够看到的就是与非门以及触发器。
不要把verilog和c语言等同起来,根本就是不同的东西,没有什么可比性。
在写一句程序的时候应该想到出来的是一个什么样的电路,计数器、选择器 三态门等等,理解时序、逻辑是一拍一拍的东西,在设计初期想的不是很清楚的时候可以画画时序图,这样思路会更加的清晰。还有就是仿真很重要,不要写完程序就去往FPGA中去加载,首先要仿真,尤其是对比较大型一点的程序,想像自己是在做asic,是没有二次机会的,所以一定要把仿真做好,还有很多新手对于语言的学习不知道选vhdl好还是verilog好,个人偏好verilog,当然不是说vhdl不好,反正写出来的都是电路,那当然就不要在语言的语法上面花太多的功夫了,verilog言简意赅,assign、always、case、if else掌握这些几乎可以写出90%的电路了,上面是我对FPGA学习的一些愚见,希望对大家有所帮助。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)