1.用Verilog编一个计数器的程序
举个简单点的例子,如下。
设计一个4bit的计数器,在记到最大值时输出一个信号
module counter_16 ( input clk, input rst_n, input cnt_in ,output reg cnt_out );
reg [3:0] cnt;
always @ (posedge clk or negedge rst_n) begin
if (~rst_n) cnt <= 4'b0;
else if (cnt_in) cnt <= cnt +1'b1;
else cnt <= cnt;
end
always @ (posedge clk or negedge rst_n) begin
if (~rst_n) cnt_out <= 1'b0;
else if (cnt_in && cnt == 4'b1111) cnt_out <= 1'b1;
else cnt_out <= 1'b0;
end
endmodule
这实际上设计了一个16进制计数器其中的一位,你可以例化多个相同模块,将低位的cnt_out连接到高位的cnt_in,级联成一个任意位数的16进制计数器。
2.计数器的verilog HDL程序
原发布者:kiwiysh
用VerilogHDL设计计数器一、实验目的1.学习使用VerilogHDL语言,并学会使用进行QuartusⅡ软件编程和仿真;2.掌握数字电路的设计方法,熟悉设计过程及其步骤;3.培养学生的动手能力,能学以致用,为今后从事电子线路设计打下良好基础;4.巩固加深对数电知识的理解,在仿真调试过程中,能结合原理来分析实验现象;二、实验内容1.设计内容及要求1)利用VerilogHDL设计一个以自己学号后三位为模的计数器;2)编写源程序;3)给出仿真电路图和仿真波形图;2.需求分析:由于本人的学号后3位为212,所以应编一个以212为模的加法计数器。若采用同步清零的方法,则计数为0~211,化为二进制数即为000000000计到011010011。3.编写源代码:modulecount_212(out,data,load,reset,clk);output[8:0]out;input[8:0]data;inputload,reset,clk;reg[8:0]out;always@(posedgeclk)//clk上升沿触发beginif(!reset)out=9'h000;//同步清零,低电平有效elseif(load)out=data;//同步预置elseif(out>=211)out=9'h000;//计数最大值为211,超过清零elseout=out+1;//计数endendmodule程序说明:该计数器为一个9位计数器,计数范围0~211,具有同步同步置数和同步清零功能。时钟的上升沿有效,当clk信号的上升沿到来时,如果清零信号为0,则清零;若不为0,计数器进行计数,计至211处同步清零。4.画出仿真电路图:图1为同步置数、同步清零加法计
3.用VERILOG语言编写一个计数器模型
以四位计数器为例给你写个。 我觉得你这题目有点问题,应该说电路中有个专用全局复位按键的,count_flag为计数使能,当为高电平时对输入时钟进行计数。
module COUNTER
(
//Input ports
SYSCLK,
RST_B,
COUNT_FLAG,
//Output ports
OVERFLOW,
DATA_OUT
);
//=============================================================
//Input and output declaration
//=============================================================
input SYSCLK;
input RST_B;
input COUNT_FLAG;
output OVERFLOW;
output [4:0] DATA_OUT;
//=============================================================
//Wire and reg declaration
//=============================================================
wire SYSCLK;
wire RST_B;
wire COUNT_FLAG;
reg OVERFLAG;
reg [3:0] DATA_OUT;
//=============================================================
//Wire and reg in the module
//=============================================================
reg [3:0] DATA_OUT_N; //The next value of DATA_OUT.
reg OVER_FLOW_N; //The next vlaue of OVER_FLOW.
parameter MAX_COUNT = 4'h8; //自己设置想计数到的最大值。
//=============================================================
//Logic
//=============================================================
always @ (posedge SYSCLK or negedge RST_B)
begin
if(!RST_B)
DATA_OUT
4.急求verilog 8进制计数器程序
//////////////////
//
//////////////////
module 8jinzhi (rst,clk,out);
//
input rst,clk;
output [2:0]out;
//
reg [2:0]out;
//
always @ (posedge clk or negedge rst )
if(!rst)
outelse
outendmodule
不知道要什么级别的。。。。这个行吧。。。用门电路也可以搭出来。三个D触发器或者JK触发器都可以
5.请哪位看看这个verilog程序,该怎样解释
out<=out<<1; // 将out左移一位并赋给out
out[0]<=~out[3]; //将out的最高位即第三位赋给out的最低位第0位
if(clr)
out<=4'h0;//置位
else
out<= out <<1;//左移一位,1st:0000;2nd:0010;3rd:0110
out[0]<=~out[3];//最高位赋给最低位;1st:0001;2nd:0011;3rd:0111
这个不是一个四位计数器吧
你可以仿真下,本来我是推算下,但是推算结果如上,怕出错,仿真下也是这个结果
1,3,7,15,14,12,8,0
6.用verilog写二进制计数器
302进制计数器,就是从0开始计数,计数到301后,再从0开始重新计数,就像十进制计数一样,从0开始计数,计数到9后回到0重新开始计数。
//---302位计数器,从0开始计数,最大值是100101101(=301);(9位)-----// module counter302(clk,rst,Q); input clk; input rst; output reg [8:0] Q; always @(posedge clk or negedge rst) begin if(!rst) begin Q <= 9'b000000000; //复位后输出Q赋值0; end else begin //时钟上升沿开始计数 if(Q==9'b100101101) begin Q <= 9'b000000000; //计数到最大值(301)后,回到0重新计数; end else begin Q <= Q+1; end end end endmodule //------------------------------------------------------------------------------//。
7.用Verilog语言怎么写一个60进制的计数器然后显示在数码管上
module xue3(iSW,oHEX3,oHEX2,oHEX1,oHEX0);
input [3:0] iSW;
output oHEX3,oHEX2,oHEX1,oHEX0;
//下面点亮四个七段数码管
bcd7seg digit0(iSW[3:0],oHEX0);
bcd7seg digit1(iSW[3:0],oHEX1);
bcd7seg digit2(iSW[3:0],oHEX2);
bcd7seg digit3(iSW[3:0],oHEX3);
endmodule
//下面是子模块。欢~~迎~~加fpga~qun~~37378637 /////////////
module bcd7seg(B,H);
input [3:0] B;
output reg H;
always @(B) begin
case (B) //选择输出数据,这里采用的是共阳极接法,要是共阴极各数按位全部取反即可。从最低位开始分别代表了七段中的abcdefg第8位是D.P段
4'h0: H = 8'hc0; //显示0
4'h1: H = 8'hf9; //显示1
4'h2: H = 8'ha4; //显示2
4'h3: H = 8'hb0; //显示3
4'h4: H = 8'h99; //显示4
4'h5: H = 8'h92; //显示5
4'h6: H = 8'h82; //显示6
4'h7: H = 8'hf8; //显示7
4'h8: H = 8'h80; //显示8
4'h9: H = 8'h90; //显示9
4'ha: H = 8'h88; //显示a
4'hb: H = 8'h83; //显示b
4'hc: H = 8'hc6; //显示c
4'hd: H = 8'ha1; //显示d
4'he: H = 8'h86; //显示e
4'hf: H = 8'h8e; //显示f
default: H =8'hff; //全灭
endcase
end
endmodule
转载请注明出处育才学习网 » verilog计数器程序怎么写