首页 > 编程语言 >KiCAD加Quartus Prime的Verilog编程练习

KiCAD加Quartus Prime的Verilog编程练习

时间:2023-05-27 16:34:54浏览次数:39  
标签:Prime count begin end Quartus KiCAD duan b1 wei

         在淘宝买了大西瓜的FPGA开发板,准备结合实物理解一下FPGA代码。为什么选择大西瓜呢,因为便宜。虽然闲鱼可能有更便宜的开发板,但我没有闲鱼的账号。

         数码管部分的电路是这样的:

      这对于强迫症来说,有点不太友好,正好因为不用说都知道的原因,需要练习一下KiCAD,就重画了一下,画完的效果如下:

 

       我的强迫症不算严重,所以“段”的拼音我就没有修改,“位”的拼音也没有修改(改了还要改引脚的pin planner)。不过对应的Verilog代码我也做了一点小小的修改:

 1 /********************************版权声明**************************************
 2 **                              大西瓜团队
 3 **                            
 4 **----------------------------文件信息--------------------------
 5 ** 文件名称: seg.v
 6 ** 创建日期:
 7 ** 功能描述:数码管的动态显示
 8 ** 硬件平台:大西瓜第三代开发板,http://daxiguafpga.taobao.com
 9 ** 版权声明:本代码属个人知识产权,本代码仅供交流学习.
10 **---------------------------修改文件的相关信息----------------
11 ** 修改人:   你猜呢
12 ** 修改日期: 2023-05-27 
13 ** 修改内容: 滚动显示0-9
14 *******************************************************************************/
15 module seg
16 (
17     input  wire        clk, //50MHZ时钟输入
18     output reg [3:0]   wei, //wei:数码管位码,硬件上只有4位
19     output reg [7:0]   duan //duan:数码管段码,‘0’led亮
20 );
21 
22     integer       count;//分频计数器
23     reg           clk_1k;//数码管扫描时钟
24     reg    [3:0]  wei_count;//位码计数器
25 
26 
27     always @(posedge clk)//分频进程
28     begin
29         if(count==20000000)
30         begin
31             count=0;
32             clk_1k=~clk_1k; // 不再是1k了,50MHz时钟,计数20M次,400mS。
33         end
34         else
35             count=count+1;
36     end
37 
38     always @(posedge clk_1k)//原本是数码管扫描进程,变成滚动显示0-9了  
39     begin
40         case(wei_count)  
41             // 第1位数码管亮,7段数字+1段小数点共8段全亮:dp g f e d c b a
42             4'b0000: begin wei=4'b1110; duan=8'b1100_0000;wei_count=wei_count+1'b1;end //0
43             4'b0001: begin wei=4'b1101; duan=8'b1111_1001;wei_count=wei_count+1'b1;end //1
44             4'b0010: begin wei=4'b1011; duan=8'b1010_0100;wei_count=wei_count+1'b1;end //2
45             4'b0011: begin wei=4'b0111; duan=8'b1011_0000;wei_count=wei_count+1'b1;end //3
46             4'b0100: begin wei=4'b0111; duan=8'b1001_1001;wei_count=wei_count+1'b1;end //4
47             4'b0101: begin wei=4'b1011; duan=8'b1001_0010;wei_count=wei_count+1'b1;end //5
48             4'b0110: begin wei=4'b1101; duan=8'b1000_0010;wei_count=wei_count+1'b1;end //6
49             4'b0111: begin wei=4'b1110; duan=8'b1111_1000;wei_count=wei_count+1'b1;end //7
50             4'b1000: begin wei=4'b1110; duan=8'b1000_0000;wei_count=wei_count+1'b1;end //8
51             4'b1001: begin wei=4'b1101; duan=8'b1001_1000;wei_count=wei_count+1'b1;end //9
52             default: begin wei=4'b0000; duan=8'b0111_1111;wei_count=wei_count+1'b1;end //.
53         endcase
54             if(wei_count > 10) wei_count = 4'b0000;
55     end
56 endmodule

       看看Verilog,再看STIL,顺带重新温习一下数字电子技术基础,感觉对数字集成电路测试的理解更深了一些。很多概念从不同的角度去理解,会有不同的收获。大约十年前,我也学习过Verilog,但是因为不用,或者说很少用到,浅尝辄止。十年后,虽然还是不用,但是在测试过常见的数字芯片之后,再次学习Verilog,学习起来似乎轻松了很多。尤其是编写Testbench时,再结合实际测试数字电路的pattern去理解,很多当时只是知道How的事情,也渐渐的了解了Why。

        顺便说一下,代码修改,是因为我们家的小朋友想看看显示0到9。

       不惑之年,也只是不惑了技术,未曾不惑过人生。或者说,知道了好多的道理,很多事情还是不如意。勉励自己,做一个情绪稳定的人。

标签:Prime,count,begin,end,Quartus,KiCAD,duan,b1,wei
From: https://www.cnblogs.com/integrated-circuit-testing/p/17436850.html

相关文章

  • Doo Prime 德璞资本:选对期货交易公司,提高交易效率
    在现代经济社会中,期货市场逐渐受到投资者的青睐。越来越多的人通过期货交易来获取财富,实现自己的金融目标。而在进行期货交易时,选择一个靠谱的期货交易公司是至关重要的。本文将详细介绍如何选对期货交易公司,提高交易效率,让广大投资者在期货市场中获得更大的利益。第一,选择信誉良好......
  • Doo Prime 德璞资本:如何做黄金期货交易?有哪些黄金期货交易方法
    黄金一直在市场上呈现出旺盛蓬勃的发展生命力,避险保值功能一直很强,还随着市场需求延伸出多个黄金交易品种,比如本文提到的黄金期货交易。如何做黄金期货交易?有哪些黄金期货交易方法?黄金期货交易方法一、做好投资准备这里的准备不单独针对某一项,而是包含可能涉及到的方方面面,比如可投......
  • C++ Primer 学习笔记—— 第三章
    第三章字符串、向量和数组前言标准库是C++必不可少的一部分,作为C++的延伸,标准库的优雅令人陶醉。如标题所言,在这一章我们将要学习数组、字符串和向量。若学习过其他编程语言,相信对数组并不陌生。其作为固定存储序列,能够为我们提供很多数据结构的解决思路,但是其在灵活性方面的......
  • 【C++ Primer】第二章(2 ~ 6节)
    变量变量提供一个具名的、可供程序操作的存储空间。C++中变量和对象一般可以互换使用。变量定义(define)定义形式:类型说明符(typespecifier)+一个或多个变量名组成的列表。如intsum=0,value,units_sold=0;初始化(initialize):对象在创建时获得了一个特定的值。初......
  • 基于FPGA的点阵屏设计,基于Quartus ii开发,Verilog编程语言,也可移植到vivado开发。
    基于FPGA的点阵屏设计,基于Quartusii开发,Verilog编程语言,也可移植到vivado开发。1、可以显示多个汉字2、暂停、启动控制3、左移右移控制4、调速控制。ID:78800675311255672......
  • 华硕 PRIME H610M-A D4 i5-12490F 1060电脑 Hackintosh 黑苹果efi引导文件
    原文来源于黑果魏叔官网,转载需注明出处。(下载请直接百度黑果魏叔)硬件型号驱动情况主板华硕PRIMEH610M-AD4(LPCController/eSPIControllerH610芯片组)处理器12thGenIntelCorei5-12490F六核已驱动内存 16GB(酷兽DDR43200MHz8GBx2)已驱动硬盘三星SSD860EVO250G......
  • C++ Primer学习笔记——第二章
    第二章变量和基本类型前言数据类型是程序的基础:它告诉我们数据的意义以及我们能在数据上执行的操作。2.1基本内置类型C++定义了包括算术类型(arithmetictype)和空类型(void)在内的基本数据类型。2.1.1算术类型算术类型分为两类:整型和浮点型。具体分类:类型含义最小容......
  • POJ2739 Sum of Consecutive Prime Numbers&&Acwing4938 连续质数之和
    方法:单调队列为什么是单调队列?因为这里让我们求连续的质数和,我们可以利用欧拉筛来维护质数,再利用单调队列来维护连续的质数。代码(POJ不支持C++11差评):#include<cstdlib>#include<cstring>#include<cstdio>#include<cctype>namespaceFastIo{ #definegcgetchar() #d......
  • C Primer Plus 第六版
      取指执行,1秒钟执行10个小目标!!寄存器:存储指令、存储指令地址等指令一般做什么用?移动数据,如从内存移动到寄存器......
  • C++ Primer 5th Edition, Chapter 2, Solutions
    Exercise2.1QuestionsWhatarethedifferencesbetweenint,long,longlong,andshort?Betweenanunsignedandasignedtype?Betweenafloatandadouble?SolutionsThosetypeshavedifferentminimumsizesaslistedinTable2.1.Andadditionalru......