云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 可编程逻辑器件设计及应用试验报告

可编程逻辑器件设计及应用试验报告

  • 62 次阅读
  • 3 次下载
  • 2025/5/2 21:46:59

b、 CLK:时钟射入,频率为22.1184MHz;

c、 CLK_S:对应波特率分频输出,根据FreSel输入控制数据进行对应分频,对应模式

有300、600、1200、1800、2400、4800、9600、14.4K、19.2K、28.8Kbps d、 CLK_S16:对应波特率16倍分频输出; ? 过程说明:

a、 建立Verilog模块; b、 建立Verilog仿真; c、 验证模块正确性;

d、 建立电路图方式顶层模块Serial

e、 连接波特率发生器模块和模式控制模块进行联合验证;

源代码如下:

module FreqMod(FreSel, CLK, CLK_S16, CLK_S); input [3:0] FreSel; input CLK;

output CLK_S16; output CLK_S; reg CLK_S=0; reg CLK_S16=0; reg [16:0]count=0; reg [16:0]count_16=0; reg [16:0]num=0; reg [16:0]num16=0; always @(posedge CLK) begin if(FreSel==0) num<=36864;//300 else if(FreSel==1) num<=18432;//600 else if(FreSel==2) num<=9216;//1200 else if(FreSel==3) num<=6144;//1800 else if(FreSel==4) num<=4608;//2400 else if(FreSel==5) num<=2304;//4800 else if(FreSel==6) num<=1152;//9600 else if(FreSel==7) num<=768;//14.4k else if(FreSel==8) num<=576;//19.2k else if(FreSel==9) num<=384;//28.8k

end always @(posedge CLK) begin count<=count+1; num16<=num/(16); count_16=count_16+1; if(count>=num) begin CLK_S<=~CLK_S; count<=0; end if(count_16>=num16) begin CLK_S16<=~CLK_S16; count_16<=0; end end endmodule

测试代码如下:

module FreqModTest_v; // Inputs reg [3:0] FreSel; reg CLK; // Outputs wire CLK_S16; wire CLK_S;

parameter PERIOD = 100; //value=时钟周期(单位ns) always begin CLK= 1'b0;

#(PERIOD/2) CLK = 1'b1; #(PERIOD/2); end // Instantiate the Unit Under Test (UUT) BitProducer uut ( .FreSel(FreSel), .CLK(CLK), .CLK_S16(CLK_S16), .CLK_S(CLK_S) ); initial begin

// Initialize Inputs // Wait 100 ns for global reset to finish #100;

FreSel=1001; // Add stimulus here end endmodule

4、 建立发送数据模块(verilog)

81DataInTXWR发送数据模块CLKModBUSY1111

图5-3 发送数据模块

? 功能说明:

a、 DataIn:发送数据输入、8bits;

b、 WR:控制数据写入,1bit;上升沿锁存输入数据;写入后下一个CLK上升沿开始

立即发送数据

c、 CLK:时钟射入,对应波特率时钟;

d、 Mod:模式输入,0对应无奇偶校验;1对应有奇偶校验;

e、 TX:串行数据输出,平时高电平,当有数据输入后,下一个CLK上升沿开始立即

发送数据;

f、 BUSY:空闲指示,当TX输出时为高,其它时间为低; ? 过程说明:

a、 建立Verilog模块; b、 建立Verilog仿真; c、 验证模块正确性; d、 加入顶层模块Serial e、 进行联合验证;

源代码如下:

module TxMod(DataIn, WR, CLK, Mod, TX, BUSY); input [7:0] DataIn; input WR; input CLK; input Mod; output TX; output BUSY; reg Tx=1;

reg Busy=0; reg [7:0]data=0; reg flag=0; reg [3:0]count=1; reg num=0; always @(posedge WR) begin

data<=DataIn; num<=data[0]+data[1]+data[2]+data[3]+data[4]+data[5]+data[6]+data[7]; flag<=1; end always @(posedge CLK) begin if(flag==1) begin Busy<=1; if(count==1) Tx<=0; else if(count==2) Tx<=data[0]; else if(count==3) Tx<=data[1]; else if(count==4) Tx<=data[2]; else if(count==5) Tx<=data[3]; else if(count==6) Tx<=data[4]; else if(count==7) Tx<=data[5]; else if(count==8) Tx<=data[6]; else if(count==9) Tx<=data[7]; else if(count==10) begin if(Mod==0) Tx<=1; else if(Mod==1) Tx<=num; count<=0; flag<=0; end count<=count+1;

搜索更多关于: 可编程逻辑器件设计及应用试验报告 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

b、 CLK:时钟射入,频率为22.1184MHz; c、 CLK_S:对应波特率分频输出,根据FreSel输入控制数据进行对应分频,对应模式有300、600、1200、1800、2400、4800、9600、14.4K、19.2K、28.8Kbps d、 CLK_S16:对应波特率16倍分频输出; ? 过程说明: a、 建立Verilog模块; b、 建立Verilog仿真; c、 验证模块正确性; d、 建立电路图方式顶层模块Serial e、 连接波特率发生器模块和模式控制模块进行联合验证; 源代码如下: module FreqMod(FreSel, CLK, CLK_S16, CLK_S); input [3:0] FreSel; input CLK; <

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com