Bác nào cho em hỏi về verilog một chút :trong verilog thì khối generate có những tác dụng gì ?
Thông báo
Collapse
No announcement yet.
Cần giúp đỡ về Verilog
Collapse
X
-
Nguyên văn bởi MDTUYEN Xem bài viếtBác nào cho em hỏi về verilog một chút :trong verilog thì khối generate có những tác dụng gì ?
Code:generate for (i=0; i<8;i++) o[i] = a[i] && b[i]; endgenerate
Tony
Comment
-
Spartan 3E FPGA
Chào các bạn,
Mình hiện đang có một card FPGA của digilent (Nexys2 board), và hiện tại mình đang gặp khó khăn trong việc lập trình cho card này. Các bạn có kinh nghiệm lập trình cho Spartan 3E FPGA (bằng Verilog) giúp mình với. Mình cảm ơn rất nhiều!
Comment
-
Nguyên văn bởi Nexys2 Xem bài viếtChào các bạn,
Mình hiện đang có một card FPGA của digilent (Nexys2 board), và hiện tại mình đang gặp khó khăn trong việc lập trình cho card này. Các bạn có kinh nghiệm lập trình cho Spartan 3E FPGA (bằng Verilog) giúp mình với. Mình cảm ơn rất nhiều!
Comment
-
Spartan 3E
Nguyên văn bởi tonyvandinh Xem bài viếtBạn hỏi chung chung như vậy kô có ai biết bạn bị trở ngại gì để mà giúp. Bạn nên tìm hiểu kỹ càng về vấn đề rồi đặt câu hỏi, càng nhiều chi tiết càng tốt để mọi người hiểu là bạn bị vướng mắc ở chỗ nào. Có ví dụ thì tốt hơn.
///
module gp1(
input clk,intflag,
inout d0,d1,d2,d3,d4,d5,d6,d7,
output reg ad0,ad1,ad2,ad3,
output reg wrn,rn,csn,
output start, stop,
output anode0,anode1,anode2,anode3,
output segA, segB, segC, segD, segE, segF, segG, segDP);
reg [7:0] sevenseg;
reg [3:0] BCD;
reg anode0_state,anode1_state,anode2_state,anode3_stat e;
reg [25:0] count;
reg [15:0] tdc;
reg [7:0] regval = 8'bZZZZZZZZ;
reg read = 1'b0;
reg [2:0] state = 3'b000;
reg [2:0] count_rw = 3'b000;
always @(posedge clk)
count <= count + 1;
always @(posedge clk)
case(state)
3'b000:
begin
rn = 1;
if (count[24:0]==25'b1000000000000000000000000) state <= 3'b001;
end
3'b001:
begin
if (count_rw == 2'b000)
begin
read = 1'b0;
regval = 8'b00000111;
{ad3,ad2,ad1,ad0} <= 4'b1011;
csn = 0;
wrn = 0;
end
if (count_rw == 3'b111)
begin
wrn = 1;
csn = 1;
state <= 3'b010;
count_rw <= 3'b000;
regval = 8'bZZZZZZZZ;
end
else
count_rw <= count_rw + 1;
end
3'b010:
begin
if (count_rw == 2'b000)
begin
regval = 8'b00000001;
{ad3,ad2,ad1,ad0} <= 4'b0010;
csn = 0;
wrn = 0;
end
if (count_rw == 3'b111)
begin
wrn = 1;
csn = 1;
state <= 3'b011;
count_rw <= 3'b000;
regval = 8'bZZZZZZZZ;
end
else
count_rw <= count_rw + 1;
end
3'b011:
if (intflag && (~read))
begin
if (count_rw == 3'b000)
begin
{ad3,ad2,ad1,ad0} <= 4'b0000;
csn = 0;
end
if (count_rw == 3'b010) rn = 0;
if (count_rw == 3'b111)
begin
tdc[7:0] <= {d7,d6,d5,d4,d3,d2,d1,d0};
state <= 3'b100;
count_rw <= 3'b000;
rn = 1;
csn = 1;
end
else
count_rw <= count_rw + 1;
end
///
Mình chân thành cảm ơn!
Comment
-
Mình thử giải thích cấu trúc case của bạn theo cách hiểu "bằng văn viết" của mình nhé,
Theo như sự khai báo của bạn, state sẽ gồm 3 flip-flop, trong đó 3 chân CLK được nối chung vào tín hiệu xung clock và giá trị mặc định đầu ra của 3 Flip-flop này là 000.
Tại mỗi thời điểm có sườn xung clock (xung clock chuyển từ 0-->1) thì
Giá trị đầu ra của 3 filp-flop sẽ chuyển từ 000 --> 001, hoặc từ 001 --> 010, hoặc từ 010 --> 011, ... nếu điều kiện if thỏa mãn. Nếu điều kiện if không thỏa mãn thì "chắc" nó vẫn giữ nguyên giá trị. Mình đoán trong code của bạn thiếu trường hợp 100, 101, 111.
Bạn có thể tìm đọc tài liệu về FSM (finite-state-machine) để hiểu thêm về cấu trúc case trên. Ngoài ra còn có một khái niệm là "one-hot coding" bạn cũng có thể nghiên cứu cùng với phần này.
Hy vọng bài viết có những thông tin có ích với bạn.
Thân mến.
Comment
-
Nguyên văn bởi Nexys2 Xem bài viếtCảm ơn bạn tonyvandinh rất nhiều. Mình mới bắt đầu tìm hiểu FPGA và Verilog nên tất cả mọi thứ đều rất mới với mình. Dưới đây là một chương trình mẫu, mình vẫn chưa hiểu trong cấu trúc "case" này, các bạn jup mình nhé!
///
module gp1(
input clk,intflag,
inout d0,d1,d2,d3,d4,d5,d6,d7,
output reg ad0,ad1,ad2,ad3,
output reg wrn,rn,csn,
output start, stop,
output anode0,anode1,anode2,anode3,
output segA, segB, segC, segD, segE, segF, segG, segDP);
reg [7:0] sevenseg;
reg [3:0] BCD;
reg anode0_state,anode1_state,anode2_state,anode3_stat e;
reg [25:0] count;
reg [15:0] tdc;
reg [7:0] regval = 8'bZZZZZZZZ;
reg read = 1'b0;
reg [2:0] state = 3'b000;
reg [2:0] count_rw = 3'b000;
always @(posedge clk)
count <= count + 1;
always @(posedge clk)
case(state)
3'b000:
begin
rn = 1;
if (count[24:0]==25'b1000000000000000000000000) state <= 3'b001;
end
3'b001:
begin
if (count_rw == 2'b000)
begin
read = 1'b0;
regval = 8'b00000111;
{ad3,ad2,ad1,ad0} <= 4'b1011;
csn = 0;
wrn = 0;
end
if (count_rw == 3'b111)
begin
wrn = 1;
csn = 1;
state <= 3'b010;
count_rw <= 3'b000;
regval = 8'bZZZZZZZZ;
end
else
count_rw <= count_rw + 1;
end
3'b010:
begin
if (count_rw == 2'b000)
begin
regval = 8'b00000001;
{ad3,ad2,ad1,ad0} <= 4'b0010;
csn = 0;
wrn = 0;
end
if (count_rw == 3'b111)
begin
wrn = 1;
csn = 1;
state <= 3'b011;
count_rw <= 3'b000;
regval = 8'bZZZZZZZZ;
end
else
count_rw <= count_rw + 1;
end
3'b011:
if (intflag && (~read))
begin
if (count_rw == 3'b000)
begin
{ad3,ad2,ad1,ad0} <= 4'b0000;
csn = 0;
end
if (count_rw == 3'b010) rn = 0;
if (count_rw == 3'b111)
begin
tdc[7:0] <= {d7,d6,d5,d4,d3,d2,d1,d0};
state <= 3'b100;
count_rw <= 3'b000;
rn = 1;
csn = 1;
end
else
count_rw <= count_rw + 1;
end
///
Mình chân thành cảm ơn!
reg [2:0] state = 3'b000;
always @(posedge clk)
case(state)
3'b000:
begin
rn = 1;
if (count[24:0]==25'b1000000000000000000000000) state <= 3'b001;
end
3'b001:
rn = 1
Rồi nếu count[24:0]==25'b1000000000000000000000000 thì state sẽ chuyển qua 3'b001 cho xung clock kế. Nếu không, thì state vẫn ở điều kiện hiện tại (3'b000).
Bạn có thể google FSM để hiểu thêm về FSM nhe.
Comment
-
Trong thread này có một vài bài tôi dùng FSM. Bạn theo dõi để tìm hiểu thêm.
http://www.dientuvietnam.net/forums/...ad.php?t=35670
Comment
-
Cảm ơn bạn hithere123 và tonuvandinh rất nhiều đã phản hồi rất nhanh và giúp đỡ mình. Mình cũng đang theo hướng dẫn của các bạn tìm hiểu thêm về FSM. Đúng là trong cấu trúc case còn thêm một số trường hợp nữa, nhưng nó tùy thuộc vào bài toán của mình phải không ạ, nếu mình chỉ cần một vài trạng thái là mô tả hết các khả năng mình cần. Mình sẽ cố gắng tìm hiểu để chạy được chương trình, mình chắc sẽ cần sự trợ giúp rất nhiều từ các bạn!
Thanks so much!
Comment
-
Nguyên văn bởi Nexys2 Xem bài viếtCảm ơn bạn hithere123 và tonuvandinh rất nhiều đã phản hồi rất nhanh và giúp đỡ mình. Mình cũng đang theo hướng dẫn của các bạn tìm hiểu thêm về FSM. Đúng là trong cấu trúc case còn thêm một số trường hợp nữa, nhưng nó tùy thuộc vào bài toán của mình phải không ạ, nếu mình chỉ cần một vài trạng thái là mô tả hết các khả năng mình cần. Mình sẽ cố gắng tìm hiểu để chạy được chương trình, mình chắc sẽ cần sự trợ giúp rất nhiều từ các bạn!
Thanks so much!
Comment
-
Nguyên văn bởi Nexys2 Xem bài viếtCác bạn thân mến, dao động của FPGA mình đang xài là 50M, nếu mình muốn dùng 40M thì mình có thể chia được không? Mình cần một tín hiệu 40M để làm clk-reference. Nếu được các bạn chỉ giúp mình nhé!
Cảm ơn các bạn nhiều!
http://www.dientuvietnam.net/forums/...ad.php?t=35447
Comment
-
Như mình được biết thì trước khi bắt tay vào viết code cho một project ta phải viết một sofware để mô phỏng khối của chúng ta,nó có tác dụng giúp ta kiểm tra project đó.Bác nào có kiinh nghiệm lập trình FPGA xin chỉ cho em cách viết sofware loại này được không.Sofware này có cần bám theo thuật toán ta sẽ triển khai trên verilog ?mdtuyen
Comment
-
Viết "software" thường để kiểm tra thuật toán về mặt ý tưởng .. các cái lợi:
- bạn có thể kết hợp với các phần software khác của hệ thống trước, xem hệ thống hoạt động thế nào (profiling), sau đó phần code software này sẽ được thay bởi phần hardware. Như vậy bạn sẽ dễ kiểm tra phần hardware của bạn hơn
- tận dùng phần software, bạn có thể tạo được test vector và dùng trong hardware verification.
---------
Hiện giờ có cả ngôn ngữ systemC, ngôn ngữ này cho phép bạn mô tả phần software giống với hardware hơn là C/C++. Nghĩa là bạn có thể tạo các registers, bus, và phần software của bạn có "thời gian" (timed) so với ngôn ngữ C bình thường là không có thời gian (untimed).
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi vi van phamĐể hàn nhôm các bạn cần chuẩn bị:
1- Sufat đồng CuSo4 pha thêm vài giot acit sulfuric, chứa vào chai nước muối sinh lý rửa mũi, mắt.
2- Cồn 90 độ, cũng chứa vào chai nước muối sinh lý.
B1- Trước tiên các bạn nhỏ lên vị...-
Channel: Tâm tình dân kỹ thuật
hôm nay, 14:04 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi vi van phamTrước tiên giúp các bạn hiểu rõ vấn đề, tôi giải thích hiện tượng vật lý trên video:
Lớp Cu sau khi mạ quá tệ do Cu bám trên Fe, thầy giáo đã đốt Cu thành CuO (oxid đồng) đồng thời Fe ( cây đinh) thành Fe2o3. Như vậy lớp CuO...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 23:42 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi mèomướpDạ cháu cũng xin phép dơ tay like ạ. Vậy là được 3 người rồi ạ, chờ thêm 1 người nữa để thành trên 3 ạ...
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 20:25 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi bqvietBqv dơ tay đồng thuận, dù rằng đã mua loại flux trợ hàn thiếc chuyên dụng rồi. Có thêm một cách khác để hàn nhôm để dắt lưng dự phòng cũng hay.
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 15:17 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi dinhthuong80Cháu đang chờ thêm 2like nữa để xem bác chia sẻ ạ!
Đã xem clip bác giới thiệu!
Cảm ơn bác chia sẻ kinh nghiệm cho thợ điện tử....-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 10:45 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi vi van phamCác bạn xem video này, cách mạ đồng lên sắt và inox chắc chắn, không bong tróc của 1 thầy giáo dạy Hóa ( Video chỉ nói mạ lên sắt, inox mà thôi), không giảng dạy lý thuyết phản ứng. https://www.youtube.com/watch?v=gVtN...h%E1%BB%8DcABC
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 07:56 -
-
bởi vi van phamHàn chì thiếc lên dây điện nhôm luôn là sự khó khăn của anh em thợ. Dung dịch trợ hàn nhôm quãng cáo mua về chỉ hàn được sắt và inox. Tôi tìm thấy trên mạng người ta dùng sulfat đồng CuSo4 mạ đồng lên nhôm rồi hàn. Cách này không dùng...
-
Channel: Tâm tình dân kỹ thuật
04-03-2025, 20:04 -
-
Trả lời cho Biết gì nói nấy, cãi chửi thoải máibởi nguyendinhvanNó là di chứng của cái bệnh thành tích, hình thức. Nếu không chữa trị đúng thày đúng thuốc thì sau này dễ biến chứng thành căn bệnh ảo.
Dẫu sao thì khoa học kỹ thuật công nghệ cũnc· cần kết hợp với cúng lễ ạ.
Cầu Thiên...-
Channel: Tâm tình dân kỹ thuật
03-03-2025, 22:15 -
-
Trả lời cho Biết gì nói nấy, cãi chửi thoải máibởi mèomướpDạ hồi năm ngoái cháu trốn học buổi sáng về rình rồi ạ. Cụ trưởng bản vào nhà chị ấy thì chính cụ ấy mới là người rên la ấy ạ, khi đi ra thì cụ ấy tóc tai quần áo xộc xệch chân đi loạng quạng lắm ạ. Chỉ có anh thợ sửa...
-
Channel: Tâm tình dân kỹ thuật
02-03-2025, 10:57 -
-
Trả lời cho Biết gì nói nấy, cãi chửi thoải máibởi vi van phamHôm nào mèo rình cụ trưởng bản sang nhà chị hàng xóm, chờ khi chị hàng xóm rên la, méo phá cửa vào nhà giúp đỡ chị ấy rồi báo cáo kết quả lên diễn đàn nhé.
Chúc mèo lành lặn, ko mất sợi lông mèo nào. đó là kết quả chữ Tâm của người không cần sự giúp đỡ....
-
Channel: Tâm tình dân kỹ thuật
02-03-2025, 08:00 -
Comment