Verilog含1个数统计电路设计

项目要求:

  1. 待检测数据“1”由外部输入,并用LED灯显示;

  1. 待检测串行数据长度为256位,由ROM输出;

  1. 一组数据检测完毕后,指示信号DONE为1;

  1. “1”的个数由数码管显示;

  1. 设计时需给出仿真结果。

  1. 设计结果下载到FPGA上实现功能的硬件验证。

Clk_1k

频率为1kHz的时钟信号,上升沿有效

D_1_0

待统计信号,手动输入。

St_Ld

开始统计同步置数/清零信号,手动输入脉冲信号。在高电平将D_1_0置入电路,并输出,同时清零S_1_0,N_clk和Done。在St_Ld由高变低时,电路开始统计工作。

Disp_D

显示置入的D_1_0值。

S_1_0

一帧256位数据中,与D_1_0相等的二进制数的个数,8位宽。

N_clk

统计256位数据实际需要的clk的周期数,8位宽。

Done

一帧统计结束信号,当Done=1时,表示统计结束。

电路设计要求:

  • 待检测的256位数据可以任意产生,事先存储在8位宽,深度为32的ROM中;

  • 将ROM中并行读出的8位数据转换为串行输出数据,然后检测串行数据中与D_1_0一样的二进制数个数;不允许先一次性转换成256位的串行数据然后再监测0或1个数的设计。

  • 在St_Ld信号为高电平时,实现D_1_0的同步载入和S_1_0的同步清零,同时必须在St_Ld由高变低后,电路才开始统计工作,直达Done=1为止。

  • 改变D_1_0的值实现0的个数统计。且0的个数加1的个数一定要等于256.

  • 需要解决的问题:(1)如何实行并串转化,并实现数据的连续输出?(2)控制电路允许统计的信号该如何表示;

创建项目步骤:

1.创建项目 File->New Project Wizard....

2.设置项目名称

3.选择电路板信号

4.其他步骤直接点击next就项目好了。

开始创建Verilog hdl文件

  1. new -> VHDL file ->OK 就好了

  1. 写入程序代码:

参考代码如下:

module counter_bit_1_0(shift_date,clk,st,d,rom_addr,N_clk,S_1_0,Done,Disp_d);
    input [7:0]shift_date;
    input clk,st,d;
    
    output reg [4:0]rom_addr = 0;
    output reg [7:0]N_clk;
    output reg [7:0]S_1_0;
    output reg Done;
    output reg Disp_d;
    reg [7:0]reg_date;
    
    always@(posedge clk)begin
        if(st)begin
            N_clk <= 0;
            Done <= 0;
        end
        else if(N_clk == 255)
            Done <= 1;
        else if(Done)
            N_clk <= N_clk;
        else
            N_clk <= N_clk + 1;
    end
    
    always@(posedge clk)begin
        if(st)begin
            S_1_0 <= 0;
            Disp_d <= d;
        end
        else if(Done)
            S_1_0 <= S_1_0;
        else if(reg_date[0] == d)
            S_1_0 <= S_1_0 + 1;
    end
    
    always@(posedge clk)begin
        if(N_clk % 8 == 6)
            rom_addr <= rom_addr + 1;
        else
            rom_addr <= rom_addr;
    end
    
    always@(posedge clk)begin
        if(st)
            reg_date <= shift_date;
        else if(N_clk % 8 == 7)
            reg_date <= shift_date;
        else
            reg_date <= reg_date>>1;
    end
endmodule
  1. 生成Symbol模块

以上步骤就核心功能实现了。

创建从ROM读取数据的mif后缀文件

  1. new->Memory Initialization File

  1. 设置宽为8,深为32;OK就创建好了

创建从ROM并行读取模块

1.如下图

2.如下图

这步设计文件名

这里选择上一步创建的mif文件

  1. 把这个文件转换为Symbol模块。

创建图形设计界面连接线路

1.创建

2.从Symbol Tool里找到刚才我们创建的模块

3.两个都导入以后连接引脚

以上步骤就完成了所有功能。

tips:

希望上述方法能够帮到您。

以上创建文件过程有些步骤省略了,有什么不懂及其他问题欢迎评论留言或私信我,可能不能及时回复,但我有时间都会回答的。

其实我也是菜鸟一只,有问题提出来一起进步。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 好的,我可以为您提供一些关于使用Quartus II软件设计一个有一个数统计电路的指导。 首先,您需要打开Quartus II软件并创建一个新项目。然后,您需要在项目中添加一个新的电路图并选择“图形输入”作为您的顶层设计语言。 接下来,您需要使用Verilog HDL语言编写内部模块。在您的设计中,您可以使用计数器来对输入数字进行计数。您可以使用always语句来控制计数器的操作,并使用if语句来检测输入数字的变化。 一旦您完成了设计,您可以对您的代码进行编译和仿真以确保它能够正常工作。如果您遇到任何问题,Quartus II还提供了一个内置的调试工具,可以帮助您诊断和解决问题。 最后,您可以使用Quartus II软件将您的设计编程到FPGA芯片中,并在实际硬件中进行测试和调试。 希望这些信息能够帮助您设计一个有一个数统计电路。 ### 回答2: 在Quartus II软件中设计一个有1个数统计电路,可以通过以下步骤进行: 1. 打开Quartus II软件,并创建一个新的项目。 2. 在项目中添加一个新的顶层设计文件,并将其命名为"top_level"。 3. 打开"top_level"文件,并进行图形输入的顶层设计。可以使用软件提供的图形工具,如逻辑元件和触发器来设计电路。 4. 内部模块使用Verilog HDL语言实现。在项目中创建一个新的Verilog HDL文件,并将其命名为"counter"。 5. 在"counter"文件中,声明一个计数器变量,并初始化为零。 6. 使用Verilog HDL语言编写逻辑以实现统计的功能。可以使用条件语句和循环语句来检测输入信号的状态,并根据情况更新计数器变量。 7. 将"counter"文件添加到项目中,并将其与"top_level"文件进行连接。 8. 在软件中进行综合和布局布线,以生成电路的实际逻辑图和布局图。 9. 完成布线后,即可生成比特流文件,用于烧录至FPGA芯片进行验证和测试。 设计完成后,该电路可以根据输入信号的状态进行计数,并将计数结果输出。这个数统计电路可以应用于很多场景,例如计算输入信号的高电平脉冲数量、输入信号中特定模式的出现次数等。通过Quartus II软件的设计和仿真功能,可以验证电路的功能正确性,并进行必要的调试和优化。 ### 回答3: Quartus II是一款用于FPGA设计的集成开发环境(IDE),可以进行电路设计、仿真、综合、布线以及烧录等操作。要设计一个有1个数统计电路,可以按照以下步骤进行: 1. 打开Quartus II软件并创建一个新的项目。 2. 在顶层设计中,使用图形输入界面设计并连接所需的输入输出接口。例如,可以使用输入模块来输入待统计的数字序列,然后使用输出模块来显示统计结果。 3. 创建一个新的Verilog模块,用于实现统计功能。可以命名为"Count_Module"。 4. 在"Count_Module"中,定义一个输入端口用于接收待统计的数字序列(假设使用8位二进制数表示),并定义一个输出端口用于输出统计结果。 5. 在"Count_Module"中,使用Verilog HDL语言编写代码实现数字计数功能。可以使用寄存器和计数器等电路元件来实现。具体实现根据需要选择不同的算法,如简单的计数、计数排序等。 6. 在"Count_Module"中,可以使用其他辅助模块(如二进制转换模块)来辅助实现统计功能。 7. 在顶层设计中,将所设计的"Count_Module"模块引入,并连接输入输出端口。 8. 进行逻辑综合、布线以及时序分析等操作。 9. 若无错误,可进行仿真功能验证设计的正确性。 10. 最后,完成FPGA编程(烧录)操作,将设计下载到目标FPGA芯片上,实现统计功能。 通过以上步骤,可以使用Quartus II软件设计并实现一个包1个数统计电路的系统。设计过程中使用了图形输入界面进行顶层设计,同时内部模块使用Verilog HDL语言进行功能实现

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晨露02

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值