作者winston1215 (Winston)
看板Programming
标题[问题] ISE verilog 问题
时间Sat Apr 13 00:16:12 2013
题目是 16个LED灯 一次亮两个灯 然後随着时间向右移动
两个LED灯中间的宽度由offset决定
频率由speed决定 如果1 则是2hz 0 则1hz
for example
OXOXXXXX → XOXOXXXX → XXOXOXXX → XXXOXOXX → XXXXOXOX → XXXXXOXO →
OXXXXXOX → XOXXXXXO → OXOXXXXX →........
//8个LED灯为例 O表示亮 X表示暗 totaloffset=1
大致已经完成了 但合成时电脑总会警告合出latch
该如何解决呢? 麻烦大家帮帮忙!
程式分两部分
第一除频器 将FPGA版的40Mhz降至2hz & 1hz
module frequencydiv(CLK,reset,count,CLK2,CLK1);
input CLK;
input reset;
output reg [24:0]count;
output reg CLK2;
output reg CLK1;
always@(posedge CLK)
begin
if(reset) count <= 25'b0;
else count <= count + 1'b1;
CLK1 = count[24];
CLK2 = count[23];
end
endmodule
第二是LED主程式
module main(CLK,speed,reset,Offset,LED);
input CLK;
input speed;
wire CLKchoice;
wire [25:1]count;
wire CLK2,CLK1;
input reset;
input [2:0]Offset;
wire [3:0]Totaloffset;
reg [15:0]data;
output reg [15:0]LED;
reg [15:0]start;
parameter two=2;
parameter one=1;
frequencydiv
fd(.CLK(CLK),.reset(reset),.count(count),.CLK2(CLK2),.CLK1(CLK1));
//加入除频器
assign CLKchoice = (~speed)?CLK2:CLK1;
assign Totaloffset = ~Offset + 1'b1;
always@(Totaloffset)
begin
case(Totaloffset)
4'b0001: data = 16'b1010_0000_0000_0000;
4'b0010: data = 16'b1001_0000_0000_0000;
4'b0011: data = 16'b1000_1000_0000_0000;
4'b0100: data = 16'b1000_0100_0000_0000;
4'b0101: data = 16'b1000_0010_0000_0000;
4'b0110: data = 16'b1000_0001_0000_0000;
4'b0111: data = 16'b1000_0000_1000_0000;
4'b1000: data = 16'b1000_0000_0100_0000;
default: data = 16'b1111_1111_1111_1111;
endcase
//mapping出LED起始位置
start = data; //纪录初始值
end
always@(posedge CLKchoice or negedge reset)
begin
if(~reset)
LED <= start; //reset成初始值
else if (data[0]==1)
begin LED <= {1,(data[15:1]>>one)};end //当最後一个是0时第一位补1
else
LED <= (data>>one);
end
endmodule
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.34.25.240
1F:推 tingyushyu:我用ISE合 都合成flip-flop@@ 140.123.103.50 04/13 14:22
2F:推 tingyushyu:只不过最下面的always block逻辑怪怪的 140.123.103.50 04/13 14:38
3F:推 tingyushyu:Totaloffset计算出来的可以不是你要的 140.123.103.50 04/13 14:51
4F:→ tingyushyu:值 检查一下吧 140.123.103.50 04/13 14:52
5F:→ tingyushyu: ^可能不是你要的 140.123.103.50 04/13 14:52
6F:→ winston1215:感谢你~~~~ 114.34.25.240 04/13 17:13