用Verilog HDL编写简单的程序!数电实验!~
module clk_div(clk,out1,out2);
input clk;
output out1,out2;
reg out1,out2;
reg [31:0]cnt1,cnt2;
always @(posedge clk)begin//50MHz分频计数
if(cnt1<32'd24999999)
cnt1 <=cnt1 + 32'd1;
else
cnt1 <=32'd0;
end
always @(posedge clk)//分频后的半周期反转
if(cnt1 == 0)
out1<=~out1;
always @(posedge clk)begin//5MHz分频计数
if(cnt2<32'd4999999)
cnt2 <=cnt2 + 32'd1;
else
cnt2 <=32'd0;
end
always @(posedge clk)//20%占空比
if(cnt2 == 32'd999999)
out2<=0;
else if(cnt2 == 32'd4999999)
out2<=1;
endmodule
always@(posedge clk1s or negedge rstn_i) //时钟1s
begin
if(!rstn_i)begin
cnt100 <= 7'd0;
end
else begin
cnt100 <= (cnt_en && ~|cnt)? 7'd99 : // cnt_en为倒计时开始标志
~|cnt? 7'd0 : cnt - 1'b1; //倒计时到0 自动停止
end
end
wire [3:0] cnt10 = (cnt100 <= 9)? cnt100[3:0] : 4'b0 ; //10s 倒计时
设计题目:数字钟的设计与仿真二.设计要求: (1)设计一个有“时”、“分”、“秒”(12小时59分59秒)显示,且有校时功能的电子钟; (2)显示采用六只LED数码管分别显示时分秒; (3)时间的小时、分可手动调整; (4)采用+5V电源供电。三.题目分析: 根据题目,我们可以分析出:数字电子钟是由多块数字集成电路构成的,其中有振荡器,分频器,校时电路,计数器,译码器和显示器六部分组成。振荡器和分频器组成标准秒信号发生器,不同进制的计数器产生计数,译码器和显示器进行显示,通过校时电路实现对时,分的校准。 1)振荡器又包括由集成电路555与RC组成的多谐振荡器,用石英晶体构成的振荡器和由逻辑门与RC组成的时钟源振荡器。三种方案如下图所示:方案一:由集成电路定时器555与RC组成的多谐振荡器作为时间标准信号源。 555与RC组成的多谐振荡器图 方案二:振荡器是数字钟的核心。振荡器的稳定度及频率的精确度决定了数字钟计时的准确程度,通常选用石英晶体构成振荡器电路。石英晶体振荡器的作用是产生时间标准信号。因此,一般采用石英晶体振荡器经过分频得到这一时间脉冲信号。 石英晶体振荡器图方案三:由集成逻辑门与RC组成的时钟源振荡器。 门电路组成的多谐振荡器图集成电路555与RC组成的多谐振荡器电路:如果精度要求不高,则可以采用由集成电路定时器555与RC组成的多谐振荡器。如上图所示。设振荡频率f=1KHz,R为可调电阻,微调R1可以调出1KHz输出。石英晶体振荡电路:采用的32768晶体振荡电路,其频率为32768Hz,然后再经过15分频电路可得到标准的1Hz的脉冲输出.R的阻值,对于TTL门电路通常在0.7~2KΩ之间;对于CMOS门则常在10~100MΩ之间。由门电路组成的多谐振荡器的振荡周期不仅与时间常数RC有关,而且还取决于门电路的阈值电压VTH,由于VTH容易受到温度、电源电压及干扰的影响,因此频率稳定性较差,只能用于对频率稳定性要求不高的场合。综上所述,因为本电路对精度没有较高的要求,因此,我们选用由集成电路555与RC组成的多谐振荡器。 2)校时器的方案有如下两种:方案一:通常,校正时间的方法是:首先截断正常的计数通路,然后再进行人工出触发计数或将频率较高的方波信号加到需要校正的计数单元的输入端,校正好后,再转入正常计时状态即可。根据要求,数字钟应具有分校正和时校正功能,因此,应截断分个位和时个位的直接计数通路,并采用正常计时信号与校正信号可以随时切换的电路接入其中。图1所示为所设计的校时电路。 图 1方案一校正电路图 方案二:校准电路由基本RS触发器和“与”门组成,基本RS触发器的功能是产生单脉冲,主要作用是起防抖动作用。未拨动开关K时,“与非”门G2的一个输入端接地,基本RS触发器处于“1”状态,这是数字钟正常工作,“分”进位脉冲能进入“分”计数器。拨动开关K时,“与非”门G1的一个输入端接地,于是基本RS触发器转为“0”状态。秒状态可以直接进入“分”计数器,而“分”进位脉冲被阻止进入,因而能较快地校准分计数器的计数值。校准后,将校正开关恢复原位,数字钟继续进行正常计时工作。 图 2 方案二校正电路通过比较可知,方案一和方案二相比,防抖动措施更好,更完备,但电路也更为复杂,成本也更高,通过比较选择方案一,既能实现防抖动功能,做出事物也更经济一些。四.总体方案: 本电路是以555定时器组成多谐振荡器作为频率发生器,多谐振荡器产生1000HZ的振荡波,经过分频器分频,分解成1HZ的脉冲波,随后经过秒计数器,秒计时器是60进制计数器,当计数器计数到60时产生进位脉冲,到分计数器。分计数器也是60进制计数器,当分计数器计数到60时,再次产生更高一级的进位脉冲,脉冲送到时计数器,实现了分向时的进位。当需要进行校时时,打开对应的开关,进行对应位置上的校时,此时计数进位脉冲无效。而计数器的工作是通过外接时钟脉冲CP的作用下,秒的个位加法计数器开始记数,通过译码器和数码显示管显示数字即计数器。当经过10个脉冲信号后,秒个位计数器完成一次循环,秒十位计数器的CP与秒个位计数器的CP同步,秒个位计数器的Qcc使得秒十位的P和T端同时为1,从而秒十位开始计数,秒十位计数器工作1次,通过译码器和数码显示管,秒十位数字加1。当经过60个脉冲信号,秒部分完成一个周期,分钟个位计数器的CP通过秒十位计数器的Q2Q1与非得到脉冲,分钟个位计数器工作一次,通过译码器和数码显示管,分钟的个位数字加1。分部分的工作方式与秒部分完全相同。当经过3600个脉冲信号,分钟部分完成一个周期,小时个位计数器的CP通过分十位计数器的Q2Q1与非得到脉冲,小时个位计数器工作一次,通过译码器和数码显示管,小时的个位数字加1。当小时个位部分完成一个周期,小时十位计数器的CP与小时个位计数器的CP同步, 小时个位计数器的Qcc使得小时十位的P和T端同时为1,从而小时十位开始计数,小时十位计数器工作1次,通过译码器和数码显示管,小时的十位数字加1。当小时十位部分计数到2同时小时的个位部分计数到4,小时个位计数器的清零端和十位计数器的清零端通过小时个位计数器的Q2和小时十位计数器的Q1与非得到信号,小时部分清零,从而完成了1次24小时计时。五.具体实现: (1) 数字时钟基本原理的逻辑框图如下图3所示: 由图3我们可以看出,振荡器产生的信号经过分频器作为产生秒脉冲,秒脉冲送入计数器,计数结果经过“时”、“分”、“秒”,译码器,显示器显示时间。其中振荡器和分频器组成标准秒脉冲信号发生器,由不同进制的计数器,译码器和显示电路组成计时系统。秒信号送入计数器进行计数,把累计的结果以“时”,“分”、“秒”的数字显示出来。“时”显示由二十四进制计数器,译码器,显示器构成;“分”、“秒”显示分别由六十进制的计数器,译码器,显示器构成;校时电路实现对时,分的校准。 (2)数字钟的原理图如附一图所示,其功能原理均与系统方框图的一致。六.各部分定性说明以及定量计算: 1.振荡器秒发生电路---振荡器是计时器的核心,振荡器的稳定度和频率的精确度决定了计时器的准确度。一般来说,振荡器的频率越高,计时精度就越高,但耗电量将越大。所以,在设计电路时要根据需要而设计出最佳电路。在此设计中,我采用的是精度不高的,由集成电路555与RC组成的多谐振荡器。其具体电路如下图4所示: 图4 振荡器电路图 555定时器是一个模拟与数字混合型的集成电路。555定时器是一种应用极为广泛的中规模集成电路。该电路使用灵活、方便,只需外接少量的阻容元件就可以构成单稳、多谐和施密特触发器。因而广泛用于信号的产生、变换、控制与检测。 目前生产的定时器有双极型和CMOS两种类型,其型号分别有NE555(或5G555)和C7555等多种。它们的结构及工作原理基本相同。通常,双极型定时器具有较大的驱动能力,而CMOS定时器具有低功耗、输入阻抗高等优点。555定时器工作的电源电压很宽,并可承受较大的负载电流。双极型定时器电源电压范围为5~16V,最大负载电流可达200mA;CMOS定时器电源电压范围为3~18V,最大负载电流在4mA以下。 555的引脚图如下图5所示: 图5 555的内部电路和功能如下图6所示: 图6 上面图6 是555定时器内部组成框图。它主要由两个高精度电压比较器A1、A2,一个RS触发器,一个放电三极管和三个5KΩ电阻的分压器而构成。它的各个引脚功能如下: 1脚:外接电源负端VSS或接地,一般情况下接地。 8脚:外接电源VCC,双极型时基电路VCC的范围是4.5 ~ 16V,CMOS型时基电路VCC的范围为3 ~ 18V。一般用5V。 3脚:输出端Vo 2脚: 低触发端 6脚:TH高触发端 4脚: 是直接清零端。当 端接低电平,则时基电路不工作,此时不论 、TH处于何电平,时基电路输出为“0”,该端不用时应接高电平。 5脚:VC为控制电压端。若此端外接电压,则可改变内部两个比较器的基准电压,当该端不用时,应将该端串入一只0.01μF电容接地,以防引入干扰。 7脚:放电端。该端与放电管集电极相连,用做定时器时电容的放电。在1脚接地,5脚未外接电压,两个比较器A1、A2基准电压分别为 的情况下,其功能如下表: 555定时器的功能表清零端 高触发端TH 低触发端 Qn+1 放电管T 功能 0 0 导通 直接清零 1 0 导通 置0 1 1 截止 置1 1 Qn 不变 保持 接通电源后,电容C1被充电,vC上升,当vC上升到大于2/3VCC时,触发器被复位,放电管T导通,此时v0为低电平,电容C1通过R2和T放电,使vC下降。当vC下降到小于1/3VCC时,触发器被置位,v0翻转为高电平。电容器C1放电结束,所需的时间为 : 当C1放电结束时,T截止,VCC将通过R1、R2向电容器C1充电,vC由1/3VCC上升到2/3VCC所需的时为: 当vC上升到2/3VCC时,触发器又被复位发生翻转,如此周而复始,在输出端就得到一个周期性的方波,其频率为 : 本设计中,由电路图可知R1、R2和C的值,然后再根据f的公式可以算出:其输出的频率为f=1KHz. 2.分频器分频器的功能主要有两个:一个是产生标准秒脉冲信号;二是提供功能扩展电路所需要的信号,如仿电台报时用的1000Hz的高音频信号和500Hz的低音频信号等。本设计中,由于振荡器产生的信号频率太高,要得到标准的秒信号,就需要对所得的信号进行分频。这里所采用的分频电路是由3个总规模计数器74LS90来构成的3级1/10分频。其电路图如下图7所示: 图7 分频器电路图 74LS90的引脚图及其功能图如下图所示: 74LS90引脚图 74LS90 功能表 3.计数器本设计所采用的是十进制计数器74SL160,根据时分秒各个部分的的不同功能,设计成不同进制的计数器。秒的个位,需要10进制计数器,十位需6进制计数器(计数到59时清零并进位),秒部分设计与分钟的设计完全相同;时部分的设计为当时钟计数到24时,使计数器的小时部分清零,从而实现整体循环计时的功能。 74LS160功能表和真值表如下表1和表2所示: 表1 输入 输出 (CR) ? (LD) ? CTT CTP CP D0 D1 D2 D3 Q0 Q1 Q2 Q3 0 × × × × × × × × 0 0 0 0 1 0 × × ↑ D0 D1 D2 D3 D0 D1 D2 D3 1 1 1 1 ↑ × × × × 计数 1 1 0 × × × × × × 触发器保持,CO=0 1 1 × 0 × × × × × 保持 表2 74LS160的真值表 CLK Q Q Q Q 0 0 0 0 0 1 0 0 0 1 2 0 0 1 0 3 0 0 1 1 4 0 1 0 0 5 0 1 0 1 6 0 1 1 0 7 0 1 1 1 8 1 0 0 0 9 1 0 0 1 10 0 0 0 0 74LS160的引脚介绍如下表3所示:表3 74LS160逻辑符号 各引脚顿的名称 D D D D 置数端 Q Q Q Q 输出端 EP ET 工作状态控制端 LD 预置数控制端 RD 异步置零(复位)端 CO 进位输出端 CLK 信号输入端 计数部分:利用74LS160芯片和74LS00芯片组成的计数器,它们采用异步连接,利用外接标准1Hz脉冲信号进行计数。显示部分: 将六片74LS160的Q0Q1Q2Q3脚分别接到实验箱上的数码显示管上,根据脉冲的个数显示时间。秒信号经过计数器之后分别得到显示电路,以便实现用数字显示时、分、秒的要求,计时电路共分三部分:计秒、计分和计时。其中,计秒和计分都是60进制,而计时为24进制,可以采用十进制计数器74LS160实现24进制、60进制计数器。(1)六十进制计数由分频器来的秒脉冲信号,首先送到“秒”计数器进行累加计数,秒计数器应完成一分钟之内秒数目的累加,并达到60秒时产生一个进位信号,所以,选用2片74LS160和一片74LS00组成六十进制计数器,采用反馈归零的方法来实现六十进制计数。其中,“秒”十位是六进制,“秒”个位是十进制。 秒部分具体设计如图8所示: 图8 秒的个位部分为逢十进一,十位部分为逢六进一,从而共同完成60进制计数器,当计数到59时清零并重新开始计数。如图所示个位1脚接高电平,7脚、9脚及10脚接1,当7脚和10脚同时为1时计数器处于计数工作状态。个位11脚和秒的十位的2脚相接,十位的9脚、10脚、7脚分别和个位的1脚相接。个位计数器由Q3Q2Q1Q0(0000)2增加到(1001)2时产生进位,从而实现10进制计数和进位功能,秒的十位在计数至0110时由与非门反馈清零实现6进制。分钟部分设计与秒完全相同。(2)二十四进制计数器:选用2片74LS160和一片74LS00组成24进制计数器,采用反馈归零的方法来实现24进制计数。当十位为0010且个位为0100时使两芯片异步清零。小时部分具体设计如图9所示: 图9 4.译码器、显示器译码是指把给定的代码进行翻译的过程。计数器采用的码制不同,译码电路也不同。74LS48驱动器是与8421BCD编码计数器配合用的七段译码驱动器。74LS48配有灯测试LT、动态灭灯输入RBI,灭灯输入/动态灭灯输出BI/RBO,当LT=0时,74LS48出去全1。本系统用七段发光二极管来显示译码器输出的数字,显示器有两种:共阳极显示器或共阴极显示器。74LS48译码器对应的显示器是共阴极显示器。本实验采用实验箱中的74LS48译码器和共阴极显示器组成的显示系统。 5.校时电路数字种启动后,每当数字钟显示与实际时间不符进,需要根据标准时间进行校时。校“秒”时,采用等待校时。校“分”、“时”的原理比较简单,采用加速校时。对校时电路的要求是 : 1)在小时校正时不影响分和秒的正常计数 。 2)在分校正时不影响秒和小时的正常计数 。如图10所示,当数字钟走时出现误差时,需要校正时间。校时电路实现对“时”“分”“秒”的校准。在电路中设有正常计时和校对位置。本实验实现“时”“分”的校对。需要注意的是,校时电路是由与非门构成的组合逻辑电路,开关S1或S2为“0”或“1”时,可能会产生抖动,为防止这一情况的发生我们接入一个由RS触发器组成的防抖动电路来控制。 校时电路图 图10 校时开关的功能表如下: 校时开关的功能表 S1 S2 功能 1 1 计数 0 1 校分 1 0 校时 6.整点报时电路 整点报时,只报时不报分。从59分50秒起,每隔2s发出一次信号,连续五次,最后一次结束时即达到正点。其原理图如下所示: 图11 电路图如下图12所示: 图12 综合以上多个电路,将其连接起来,就组成了一个具有时、分、秒计时功能,能够手动校时、校分,并且整点报时的数字电子钟。七.实验仿真:在电子电路计算机仿真软件Multisim中进行调试和仿真数字电子钟,得到的仿真电路图如附二图所示。由仿真电路实验知道了当高频信号经过分频器后得到标准的秒脉冲信号,进入60进制的“秒”计时,“秒”的分位进入60进制的“分”计时,最后,由分的“时”进位进入24进制的“时”计时。再加上由门电路和开关构成的校时电路对电路的“时”,“分”进行校时,从而得到正确的时间的。八.元器件清单(1)74LS160( 6片) (2)74LS00(15片)(3)数码显示器(6片) (4)74LS90(3片)(5)74LS30(1片) (6)74LS04(1片)(7)74LS02(1片) (8)555计时器(1片)(9)可变电容(1个) (10)电容(2片)(11)蜂鸣器(1个) (12)电阻(2个)(13)数字电路实验箱 (14)+5V电源若干(15)导线,开关若干。九.设计心得体会 在此次的数字钟设计过程中,更进一步地熟悉了芯片的结构及掌握了各芯片的工作原理和其具体的使用方法。使我对已学过的电路、数电、模电等电子技术的知识有了更深一步的了解,锻炼和培养了自己利用已学知识来分析和解决实际问题的能力。对自己以后的学习和工作有很大的帮助。刚开始做这个设计的时候感觉自己什么都不知道怎么下手,脑子里比较浮躁和零乱。但通过一段时间的努力,通过重温数电,模电等电子技术的书籍,还有通过查看相关的设计技术以及一些参考文献,再加之在老师的指导和周围同学的帮助下,使我对自己的本设计有了熟练的掌握。在整个的设计过程中我充满了渴望和用心。记得在精工实习的时候,也是用满腔的热情来完成各项实习任务,并在每项实习项目中都达到了优秀的成绩。 所以,我相信自己的实际动手能力,并一向的加强自己在这方面的努力。在这次的电子技术设计中亦是如此,用自己的双手和满腔的热情来完成各个环节,不断的在图书管查看相关资料和期刊文献,特别在网络上也收收获了很多新鲜的东西。这次设计更让我熟悉了一些常用集成逻辑电路和其相应芯片的使用。虽然,在本设计中所用的方案不是最好的,但我想其中的原理是最基本的;虽然其中可能出现误差,不过在杨老师的答疑课上,这些问题还是基本解决了。最后,我要衷心的感谢杨老师给了我一次实践的机会和平时在学习上的莫大帮助,让我更加深刻地了解和认识到了自己的优点和不足,通过这个课程设计我发现了我好多知识都不熟悉甚至有的东西我根本就不知道,这让我感到了要学习的东西还有很多很多。因此使我更坚定了在以后的学习中要扎实好基础,阔广知识面。碰到的问题越让人绝望,解决问题之后的喜悦程度就越高。作为工科类的学生,以后工作了难免要碰到许许多多的问题,不要绝望,坚持,直到看到胜利的曙光。 十.参考文献 李中发主编. 电子技术. 北京:中国水利水电出版社. 毛期俭主编. 数字电路与逻辑设计实验及应用. 北京: 人民邮电出版社. 吕思忠,施齐云主编. 数字电路实验与课程设计. 哈尔滨:哈尔滨工程大学出版社. 阎石主编.数字电子技术基础(第四版). 北京:高等教育出版社. 黄智伟主编. 电子电路计算机仿真设计与分析. 北京:电子工业出版社. 程勇主编. Multisim10电路仿真实例讲解. 北京: 人名出版社. 彭介华主编. 电子技术课程设计指导. 北京:高等教育出版社. 卢结成、高世忻等编. 电子电路实验及应用课题设计. 合肥:中国科学技术大学出版社. 梁宗善主编. 电子技术基础课程设计. 武汉:华中理工大学出版社. 欧阳星明主编. 数字系统逻辑设计. 北京:电子工业出版社. 李中发主编. 电子技术基础课程设计. 武汉:华中理工大学出版社.
回答时间:2011-10-23 4:19:57
最好找工程师,电话沟通比较好
求用Verilog编写的密码锁和实用计算器程序,好的话追加100
signal inkey,outopen,ifnum,s_ua,chg_c,a_ua,back_time:std_logic;signal sure_key,shake_0key,x,y,dout:std_logic;signal time:STD_LOGIC_VECTOR(7 DOWNTO 0);signal shake_key:std_logic_vector(3 downto 0);BEGIN temp_code<=code4&code3&code2&code1;-- key<=user_admin&chgcode&enter&...
Verilog 编写的8分频模块,32分频模块求高手详细解释一下,我是新手 急...
第一个程序:clk1输出占空比为50%,当count=000~011(0到3)的时候,clk1=count[2]=0;当count=100~111(4~7)的时候,clk1=count[2]=1;count从0~7循环,即完成8分频 第二个程序:clk2输出占空比为50%,当count=00000~01111(0~15)的时候,clk1=count[2]=0;当count=10000~11111(16~...
用verilog hdl编写十六进制转换十进制的程序
module BCD(clk,data,Ten,One);input clk;input[7:0] data;output[3:0] Ten,One;reg[3:0] Ten,One;integer i;always@ (posedge clk)begin Ten = 4'd0;One = 4'd0;for (i=6;i>=0;i=i-1)begin if (Ten >= 5) Ten = Ten + 3;if (One >= 5) One = One + 3;Ten =...
为什么再用verilog编写程序时,always@(posedge clock or reset)语句是...
同一个always语句的触发条件,也就是@后面的内容必须统一,要么为沿触发,要么为组合逻辑数值改变触发,这是规定。要么写成always @ (posedge clk or negedge rst)要么写成always @ (*)
用verilog编写程序表示8位数码扫描显示电路
我这里有六位的 module time_display(clk_100,hour,minute,second,led_light,sm_seg);input clk_100;input [4:0] hour;input [5:0] minute;input [5:0] second;output [5:0] led_light;output [7:0] sm_seg;\/\/假设这里用的是8段数码管 reg [5:0] led_light;reg [7:0] sm_seg...
用verilog编写LED循环显示控制电路(数字电子技术) 分不是问题..._百度...
用verilog编写LED循环显示控制电路(数字电子技术) 分不是问题... 一、设计任务及原理:LED循环显示控制电路就是对于一组LED(16个),通过不同的工作模式可按照一定的规律来点亮或者熄灭。所要求的循环显示控制电路共分4个节拍,四个节拍按照一定的顺... 一、设计任务及原理:LED循环显示控制电路就是对于一组LED(16个...
Verilog编写测试程序中为什么用bit,而不是reg
这个SV的写法,bit只有0和1两种状态,reg有0,1,x,z四种状态。因此使用bit仿真速度快
求:用verilog语言编写10进制减法计数器
module CNT10 (CLK, RST, EN, CQ, COUT);input CLK,RST,EN;output[3:0] CQ;output COUT;reg[3:0] CQ,CQI;reg COUT;always @(posedge CLK)\/\/检测时钟上升沿 begin : u1 if (RST == 1'b1)\/\/计数器复位 begin CQI={4{1'b0}};end begin if(EN==1'b1)\/\/检测是否允许计数 begin...
求高手指导:用Verilog编写代码实现以下功能:
临时写的 module (clk,rst,valid,a_i,b_i, \/\/valid高时,输入数据有效 y_o );input clk,rst;input valid;input [7:0] a_i,b_i;output [7:0] y_o;reg [7:0] y_o_r;always (posedge clk or negedge rst)if(!rst) y_o_r <= 8'd0;else if(valid) y_o_r <= a_i...
数字电路时钟设计verilog语言编写--
电子线路设计与测试实验报告一、实验名称多功能数字钟设计二、实验目的1.掌握可编程逻辑器件的应用开发技术——设计输入、编译、仿真和器件编程;2.熟悉一种EDA软件使用;3.掌握Verilog设计方法;4.掌握分模块分层次的设计方法;5.用Verilog完成一个多功能数字钟设计。三、设计内容及要求1.基本功能...
神池县15018612471:
如何用verilog写8个流水灯 - ?
滕伏沉香: module first_soft (clk, rst, led);//port input clk, rst;output [7:0] led; reg [7:0] led; reg [24:0] count;//计数器 reg [24:0] speed;//速度 reg [3:0] state;//状态,[3]=1:正转;[3]=0:翻转;{2,0}速度always @(posedge clk or negedge rst)//自动变频流水...
神池县15018612471:
Verilog 编写的LED 程序,求高手详细解释一下,我是新手 - ?
滕伏沉香: buffer<=buffer+1'b1;这是一个阻塞式语句 一般用于时序逻辑中 有一个时钟的延时 该句等效于C语言的 buffer++;
神池县15018612471:
verilog 控制四种流水灯 fpga - ?
滕伏沉香: module ledwater(clk,led,s)input clk;input[1:0]s;output[7:0]led; reg [7:0] led=0;reg [1:0] olds=0; always@(posedge clk) olds<=s;always@(posedge clk)if (olds^s)case (s)2'b00: led<=1; //*a2'b01: led<=1;2'b10: led<=8'b1010_1010;2'b11: ...
神池县15018612471:
verilog跑马灯修改实现奇数灯循环亮 偶数灯一直灭 - ?
滕伏沉香: 你应该把led[7:0] = {led[6:0],led[7]};//left shift 这个语句换成非阻塞赋值试试,我感觉你的应该是这里出了问题,在一个always中即用阻塞赋值又用非阻塞赋值是不好的,最好是赋值方式相同,若有问题再追问.
神池县15018612471:
利用verilogHDL设计节日七个彩灯逐个亮,并循环闪烁...最好利用阻塞与非阻塞,麻烦你了 - ?
滕伏沉香: 阻塞赋值 module led_top(resetb, clk, led) input resetb; input clk; output [6:0] led; reg [6:0] led, led_wire; always @(negedge resetb, posedge clk) if (~resetb) led else led always @(led) led_wire = {led[5:0], led[6]}; endmodule 推荐使用非阻塞赋值 ...
神池县15018612471:
12个跑马灯 verilog hdl程序中rst复位 四种循环模式从左到右点亮 从右到左点亮 - ?
滕伏沉香: 很高兴回答你的问题!如果以下回答合适,请采纳;如果不恰当,继续讨论.谢谢!令clk为led流水灯的驱动时钟,rst为上升沿复位信号(异步).则所实现的Verilog HDL代码部分如下:module led_run(clk,led,rst); input clk; //clk with low ...
神池县15018612471:
verilog中,我想实现以下功能:当条件1满足时,让led灯亮0.5秒,再熄灭,3.5秒后,再亮0 - ?
滕伏沉香: 设个寄存器做计数器 alway(条件1满足) begin if count=xxx,对应4秒 count=0 else count=count+1 endalways(条件1满足) begin led=1 count=0 endalways(clk) if(count=XXX;对应0.5秒) led=0 else led=1
神池县15018612471:
用verilog HDL 写一个程序,是在8*8点阵上面循环显示EDA三个字母 - ?
滕伏沉香: 首先确认需要显示E.D.A的时间分别为多少,折算成多少个时钟周期; 然后写大小2个计数器,小计数器就是需要停留的时钟周期,大计数器为循环显示不同字母;
神池县15018612471:
用verilog设计一个按键控制一个LED灯,按一下建LED灯就显示0在按一下LED灯就显示1就这样按直到显示到9,在按一下LED灯还显示0,不按还显示原来那个数字 - ?
滕伏沉香: 这个程序可以不用时钟,即使使用时钟你这个方法也是不对的; 正确的做法:如果按键a低表示按下,那么只需要判断a的上升沿然后加一次就可以了,同时你需要一个复位按键用来复位;具体程序如下,已仿真,完全正确;请给分,有不明白...
神池县15018612471:
求一个能实现25秒绿灯,10秒黄灯,25秒红灯循环工作的verilog代码? - ?
滕伏沉香: module traffic_lights( clk, rst, green, yellow, red); input clk; input rst; onput green; onput yellow; onput red; parameter TIME_10S = 32'd5000_0000; parameter TIME_25S = 32'd12_5000_0000; parameter TIME_35S = 32'd17_5000_0000; parameter ...