发布时间 : 星期一 文章基于Verilog的数字频率计的设计包含代码及仿真更新完毕开始阅读
else begin
case(count)
0: begin sign_out4<=latch1; se<=count;end 1: begin sign_out4<=latch2; se<=count;end 2: begin sign_out4<=latch3; se<=count;end
3: begin sign_out4<=latch4; se<=count;end 4: begin sign_out4<=latch5; se<=count;end
5: begin sign_out4<=latch6; se<=count;end default:sign_out4<=4'b1111; endcase end end
//////////////////////////////////////////////////////////////////////////////////////////// 将数据依次译码 always@(posedge clk_1khz) begin
if(ff==2'b01&&se==3)begin dp<=0;end
else if(ff==2'b10&&se==2)begin dp<=0;end else if(ff==2'b11&&se==1)begin dp<=0;end else begin dp<=1;end end
//////////////////////////////////////////////////////////////////////////////////档位选择 always@ ( sign_out4) begin if(!rest)
begin segs<=0;end else
begin
case(sign_out4) 0:segs<=7'b0000001; 1:segs<=7'b1001111; 2:segs<=7'b0010010; 3:segs<=7'b0000110; 4:segs<=7'b1001100; 5:segs<=7'b0100100; 6:segs<=7'b1100000; 7:segs<=7'b0001111;
8:segs<=7'b0000000; 9:segs<=7'b0000100; default:segs<=7'b1111111;
endcase end end
//////////////////////////////////////////////////////////////////////////////////////译码显示 endmodule
仿真图
模块仿真图
五,顶层电路程序
module top(rest,clk,key1,key2,key3,clk_in,se,segs,led,dp,en,yichu); input rest,clk,clk_in,key1,key2,key3; output dp,led,en,yichu; output [3:1] se ; output[7:1] segs;
wire [4:1]out1,out2,out3,out4,out5,out6; wire [2:1]ff; wire gate_out1; count
count(.clk(clk),.rest(rest),.clk_10hz(clk_10hz),.clk_100hz(clk_100hz),.clk_1khz(clk_1khz));
///////////////////////////////////////////////////////////////////////分频器 chose
chose(.rest(rest),.clk_1khz(clk_1khz),.clk_10hz(clk_10hz),.clk_100hz(clk_100hz),. ky1(key1),.key10(key2),.key100(key3),
.gate_out1(gate_out1),.ff(ff),.clk_latch(clk_latch),. clk_cear(clk_clear));
/////////////////////////////////////时基选择模块
counter counter(.start(gate_out1),.rest(rest),.clk_in(clk_in),.cnt1(out1), .yichu(yichu) ,.cnt2(out2),.cnt3(out3),.cnt4(out4),.cnt5(out5),.cnt6(out6),.clk_clear(clk_clear));
////////////////////////////////////计数器器 v138 v138(.rest(rest),.clk_1khz(clk_1khz),.se(se),
.led(led),.in1(out1),.in2(out2),.in3(out3),.in4(out4),
.in5(out5),.in6(out6),.segs(segs),.ff(ff),.en(en),.dp(dp),.clk_latch(clk_latch)); endmodule
///////////////////////////////////////////////////译码显示
顶层电路图
生成的各个模块按要求连线,形成顶层原理图,如下
3 分配引脚和下载实现
根据《XC3S200A I/O口对应管脚参考》分配引脚。引脚分配完毕后双击
“Generate programming”对所有程序进行综合,改正综合过程中提示的错误和警 把程序下载到电路板上。Configure Device”告,然后运行“
4 结果测试
在成功下载并运行后,评估该设计系统的实际测量效果,作对比试验,选用频率可调的函数发生器生成测试信号。当闸门时间为1s时,测得结果如下: 序号 输入(Hz) 输出(KHz) 1 1 000.001