”Altera的UP2板-付出的UART的19.2kHzclock

S

stuntmaster

Guest
嗯大家我新的Verilog和我这样做基于CPLD的UART
我想使用的1200波特率
, 所以我的时钟频率应19.2KHz
问题是我只有25.7MHz在Altera UP2水晶板
如何编写Verilog的项目
, 来推动这一频率的形式板

我试图让该代码1kHz时只是为了检查
, 但不工作

输入clk_25mhz;
输出clk_1khz;

第clk_1khz;
第[9:0]共1个记录;总是@(posedge clk_25mhz)
开始:process_1
如果(共1个记录“= 1000)
开始
共1个记录“=共1个 1;
末端
其他的
开始
共1个记录“= 0;
末端
如果(共1个“100)
开始
clk_1khz“= 1'b 0;
末端
其他的
开始
clk_1khz“= 1'b 1;
末端
末端

帮助PLZ

 
难以阅读
, 没有缩进代码。但作为一个一般性评论你不应该划分在逻辑时钟。FPGA和CPLD具有特殊的时钟线
, 当你的情侣他们的逻辑你将失去具有低偏移时钟线的优势。

你真正想做的是产生一个时钟使能信号。我没有太多Altera的任何赛灵思预计以上
, 但您的触发器看起来像这样:

总是@(posedge时钟)
如果(sync_reset)问“= 0;否则
如果(clock_enable)问“=〜流量;

该命令是重要的。所以
, 如果你的顺序写你会得到一个“自然的”触发器(检查Altera的文档,但我敢打赌
, 这是相同的)。

所以
, 那么关键是要产生一个时钟使能在您所需的频率为正确的时间脉冲。因此
, 我想有一个计数器的时钟使能产生在什么比例25.7E6是19.2E3。

因此
, 从广义上讲:

丝bitclocken;
第[31:0] clockdiv / *您可能需要更多或更少位* /分配bitclocken =(clockdiv == 0);

总是@(posedge时钟)
如果(复位)clockdiv“= 32'bXXXXXXX; / /使用您的时间常数
否则
, 如果(clockdiv == 32'b0)clockdiv“= 32'bXXXXXXX; / /同样constnat
否则clockdiv“= clockdiv - 1;

总是@(posedge时钟)
如果(bitclocken)开始
/ /在这里的东西才会发生的“慢”时钟设置率由XXXXXX号
末端

希望帮助。

铝总统

私人秘书
Verilog的东西在http://tutor.awce.com

 

Welcome to EDABoard.com

Sponsor

Back
Top