名称:分频及姓名输出电路设计Verilog代码VIVADO仿真
软件:VIVADO
语言:Verilog
代码功能:
任务:分频及姓名输出电路
两个输出信号:cik128.name_out(70)clk128,将输出128kHz的时钟信号name_out信号输出自己姓名,将自己姓名拼音的ASC11码存储在数组,并128kHz频率输出每一个字节。
输入时钟资源:50MHz
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. Testbench
5. 仿真图
郭小东
16进制显示
ASCII码显示
另外两个操作类似,仿真图如下
胡小平
许鑫全
部分代码展示:
`timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// // Company: // Engineer: // // Create Date: 2019/11/20 22:55:06 // Design Name: // Module Name: div_name // Project Name: // Target Devices: // Tool Versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // ////////////////////////////////////////////////////////////////////////////////// //郭小东=guoxiaodong module div_name( input clk_50M, output clk128, output reg [7:0] name_out ); //分频到128KHz,分频系数=50000000/128000=390 parameter div_num=390; reg [15:0] div_cnt=16'd0; reg clk_128KHz=0; always@(posedge clk_50M) if(div_cnt==div_num/2)begin div_cnt<=0; clk_128KHz<=~clk_128KHz;//计数390/2反转一次,相当于390分频 end else begin div_cnt<=div_cnt+16'd1; clk_128KHz<=clk_128KHz; end assign clk128=clk_128KHz; reg [7:0] name_mem[0:10] ;//定义8位宽,11深度的数组 reg [3:0] name_count=4'd0; always@(posedge clk_128KHz) if(name_count>=4'd11) name_count<=4'd0; else name_count<=name_count+4'd1;//累加,用于顺序输出数组 always@(posedge clk_128KHz) if(name_count==4'd0)begin//初始化数组,guo xiao dong
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1108
阅读全文
434