名称:分频及姓名输出电路设计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
阅读全文
278