PYNQ로 Jupyter를 하고 Polyphony로 고위 합성을 합니다.
PYNQ라는 판자에 있어요.
Digilent에서 판매하는 PYNQ 보드에서는 Jupter를 표준으로 사용할 수 있습니다.FPGA와 협업한 흥미로운 콘셉트의 제품이라 소개해드릴게요.
그리고 그 다음에polyphony라는 Python에서verilog를 생성하는 고위 합성 도구를 사용해 보세요.
PYNQ가 뭐예요?
PYNQ의 상세한 내용을 보고 싶습니다여기..Zynq라는 ARM+FPGA의 SoC를 실은 판입니다.이 판자를 모으고 있는 나는 빠르게 구매했다.
Pynq의 P는 선봉 P다.단추도 분홍색으로 할게요.
HDMI OUT/HDMI IN이 있는데 재미있지 않나요?그럼 한번 써볼래요?
전원 연결 + 네트워크 사용 가능
보통 이런 판자는 조작 매뉴얼을 보고 다양한 물건을 연결해야 한다. 예를 들어 IoT 같은 것은 한밤중에 소리를 지르면서 이동해야 하지만 이 판자는 낮부터 쉽게 사용할 수 있다.전원 연결 네트워크를 켜면 브라우저로 Windowshttp://pynq:9090를 치면 간단하게 연결할 수 있다.
뒤에는 삼바와 NetBIOS가 움직이는 것 같은데 Windows를 위해 이름을 해결한다.
샘플을 사용한 얼굴 인식(USB 카메라에서)
USB 카메라를 연결하면 OpenCV의 얼굴을 쉽게 식별할 수 있습니다.FPGA는 어디에 있습니까?이런 느낌이지만 어쨌든 장비나 준비 없이도 사용할 수 있다는 게 특징이다.USB 카메라도 없으면 파일에서 읽을 수도 있다.
HDMI 출력 카메라가 있으면 입력할 수도 있습니다.HDMI 입력(위)에 FPGA가 사용됩니다.
미묘한 결과지만 이미 지쳤으니 용서해 주세요.어쨌든 할 수 있어.
Polyphony 설치 및 실행
Polyphony라는 고급 합성 도구를 설치합니다.pip3 install로 하면 될 것 같아요.고위 합성 뭐?새 소스 코드 Python입니다.
list11.pyfrom polyphony import testbench
def sum(l1:list):
def sub_sum(l2:list):
def sub_sub_sum(l2:list):
s = 0
for l in l2:
s += l
return s
return sub_sub_sum(l2)
return sub_sum(l1)
def list11(x):
data1 = [x, 1, 2]
data2 = [x, 1, 2, 3, 4, 5]
s1 = sum(data1)
s2 = sum(data2)
return s1 + s2 + x
@testbench
def test():
assert 18 == list11(0)
assert 21 == list11(1)
assert 24 == list11(2)
test()
아무래도 좀 교활한 것 같지만 점퍼가 subprocess에서 실행한다.
그리고 polyphony.out.나타나다
완성된verilog 코드입니다!!
모두 싣고 싶지만, 911행의 사랑을 베고 있기 때문이다.
polyphony_out.vmodule sum_sub_sum_sub_sub_sum
(
input wire signed [31:0] l21_q,
input wire signed [12:0] l21_len,
input wire CLK,
input wire RST,
input wire sub_sub_sum_READY,
input wire sub_sub_sum_ACCEPT,
output reg signed [31:0] sub_sub_sum_OUT0,
output reg l21_req,
output reg signed [31:0] l21_d,
output reg signed [12:0] l21_addr,
output reg l21_we,
output reg sub_sub_sum_VALID );
ザックっと中略
begin
if (in_addr[ADDR_WIDTH-1] == 1'b1) begin
address = RAM_LENGTH + in_addr;
end else begin
address = in_addr;
end
end
endfunction // address
wire [ADDR_WIDTH-1:0] a;
assign a = address(ADDR);
assign Q = mem[read_addr];
assign LEN = RAM_LENGTH;
always @ (posedge CLK) begin
if (WE)
mem[ADDR] <= D;
read_addr <= a;
end
endmodule
그 다음엔 어떻게 하지?
아마 iverilog를 설치하면 시뮬레이션을 할 수 있을 거예요.삼바도 있으니까 잘하면 비바도와 협업해서 합성할 수 있을 것 같아요.그 정도는 아니야.
절반을 쓴 것처럼 보이지만 그게 끝이야.
Reference
이 문제에 관하여(PYNQ로 Jupyter를 하고 Polyphony로 고위 합성을 합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ryos36/items/56ff8270674b0d0c72b8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
PYNQ의 상세한 내용을 보고 싶습니다여기..Zynq라는 ARM+FPGA의 SoC를 실은 판입니다.이 판자를 모으고 있는 나는 빠르게 구매했다.
Pynq의 P는 선봉 P다.단추도 분홍색으로 할게요.
HDMI OUT/HDMI IN이 있는데 재미있지 않나요?그럼 한번 써볼래요?
전원 연결 + 네트워크 사용 가능
보통 이런 판자는 조작 매뉴얼을 보고 다양한 물건을 연결해야 한다. 예를 들어 IoT 같은 것은 한밤중에 소리를 지르면서 이동해야 하지만 이 판자는 낮부터 쉽게 사용할 수 있다.전원 연결 네트워크를 켜면 브라우저로 Windowshttp://pynq:9090를 치면 간단하게 연결할 수 있다.
뒤에는 삼바와 NetBIOS가 움직이는 것 같은데 Windows를 위해 이름을 해결한다.
샘플을 사용한 얼굴 인식(USB 카메라에서)
USB 카메라를 연결하면 OpenCV의 얼굴을 쉽게 식별할 수 있습니다.FPGA는 어디에 있습니까?이런 느낌이지만 어쨌든 장비나 준비 없이도 사용할 수 있다는 게 특징이다.USB 카메라도 없으면 파일에서 읽을 수도 있다.
HDMI 출력 카메라가 있으면 입력할 수도 있습니다.HDMI 입력(위)에 FPGA가 사용됩니다.
미묘한 결과지만 이미 지쳤으니 용서해 주세요.어쨌든 할 수 있어.
Polyphony 설치 및 실행
Polyphony라는 고급 합성 도구를 설치합니다.pip3 install로 하면 될 것 같아요.고위 합성 뭐?새 소스 코드 Python입니다.
list11.pyfrom polyphony import testbench
def sum(l1:list):
def sub_sum(l2:list):
def sub_sub_sum(l2:list):
s = 0
for l in l2:
s += l
return s
return sub_sub_sum(l2)
return sub_sum(l1)
def list11(x):
data1 = [x, 1, 2]
data2 = [x, 1, 2, 3, 4, 5]
s1 = sum(data1)
s2 = sum(data2)
return s1 + s2 + x
@testbench
def test():
assert 18 == list11(0)
assert 21 == list11(1)
assert 24 == list11(2)
test()
아무래도 좀 교활한 것 같지만 점퍼가 subprocess에서 실행한다.
그리고 polyphony.out.나타나다
완성된verilog 코드입니다!!
모두 싣고 싶지만, 911행의 사랑을 베고 있기 때문이다.
polyphony_out.vmodule sum_sub_sum_sub_sub_sum
(
input wire signed [31:0] l21_q,
input wire signed [12:0] l21_len,
input wire CLK,
input wire RST,
input wire sub_sub_sum_READY,
input wire sub_sub_sum_ACCEPT,
output reg signed [31:0] sub_sub_sum_OUT0,
output reg l21_req,
output reg signed [31:0] l21_d,
output reg signed [12:0] l21_addr,
output reg l21_we,
output reg sub_sub_sum_VALID );
ザックっと中略
begin
if (in_addr[ADDR_WIDTH-1] == 1'b1) begin
address = RAM_LENGTH + in_addr;
end else begin
address = in_addr;
end
end
endfunction // address
wire [ADDR_WIDTH-1:0] a;
assign a = address(ADDR);
assign Q = mem[read_addr];
assign LEN = RAM_LENGTH;
always @ (posedge CLK) begin
if (WE)
mem[ADDR] <= D;
read_addr <= a;
end
endmodule
그 다음엔 어떻게 하지?
아마 iverilog를 설치하면 시뮬레이션을 할 수 있을 거예요.삼바도 있으니까 잘하면 비바도와 협업해서 합성할 수 있을 것 같아요.그 정도는 아니야.
절반을 쓴 것처럼 보이지만 그게 끝이야.
Reference
이 문제에 관하여(PYNQ로 Jupyter를 하고 Polyphony로 고위 합성을 합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ryos36/items/56ff8270674b0d0c72b8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
USB 카메라를 연결하면 OpenCV의 얼굴을 쉽게 식별할 수 있습니다.FPGA는 어디에 있습니까?이런 느낌이지만 어쨌든 장비나 준비 없이도 사용할 수 있다는 게 특징이다.USB 카메라도 없으면 파일에서 읽을 수도 있다.
HDMI 출력 카메라가 있으면 입력할 수도 있습니다.HDMI 입력(위)에 FPGA가 사용됩니다.
미묘한 결과지만 이미 지쳤으니 용서해 주세요.어쨌든 할 수 있어.
Polyphony 설치 및 실행
Polyphony라는 고급 합성 도구를 설치합니다.pip3 install로 하면 될 것 같아요.고위 합성 뭐?새 소스 코드 Python입니다.
list11.pyfrom polyphony import testbench
def sum(l1:list):
def sub_sum(l2:list):
def sub_sub_sum(l2:list):
s = 0
for l in l2:
s += l
return s
return sub_sub_sum(l2)
return sub_sum(l1)
def list11(x):
data1 = [x, 1, 2]
data2 = [x, 1, 2, 3, 4, 5]
s1 = sum(data1)
s2 = sum(data2)
return s1 + s2 + x
@testbench
def test():
assert 18 == list11(0)
assert 21 == list11(1)
assert 24 == list11(2)
test()
아무래도 좀 교활한 것 같지만 점퍼가 subprocess에서 실행한다.
그리고 polyphony.out.나타나다
완성된verilog 코드입니다!!
모두 싣고 싶지만, 911행의 사랑을 베고 있기 때문이다.
polyphony_out.vmodule sum_sub_sum_sub_sub_sum
(
input wire signed [31:0] l21_q,
input wire signed [12:0] l21_len,
input wire CLK,
input wire RST,
input wire sub_sub_sum_READY,
input wire sub_sub_sum_ACCEPT,
output reg signed [31:0] sub_sub_sum_OUT0,
output reg l21_req,
output reg signed [31:0] l21_d,
output reg signed [12:0] l21_addr,
output reg l21_we,
output reg sub_sub_sum_VALID );
ザックっと中略
begin
if (in_addr[ADDR_WIDTH-1] == 1'b1) begin
address = RAM_LENGTH + in_addr;
end else begin
address = in_addr;
end
end
endfunction // address
wire [ADDR_WIDTH-1:0] a;
assign a = address(ADDR);
assign Q = mem[read_addr];
assign LEN = RAM_LENGTH;
always @ (posedge CLK) begin
if (WE)
mem[ADDR] <= D;
read_addr <= a;
end
endmodule
그 다음엔 어떻게 하지?
아마 iverilog를 설치하면 시뮬레이션을 할 수 있을 거예요.삼바도 있으니까 잘하면 비바도와 협업해서 합성할 수 있을 것 같아요.그 정도는 아니야.
절반을 쓴 것처럼 보이지만 그게 끝이야.
Reference
이 문제에 관하여(PYNQ로 Jupyter를 하고 Polyphony로 고위 합성을 합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ryos36/items/56ff8270674b0d0c72b8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from polyphony import testbench
def sum(l1:list):
def sub_sum(l2:list):
def sub_sub_sum(l2:list):
s = 0
for l in l2:
s += l
return s
return sub_sub_sum(l2)
return sub_sum(l1)
def list11(x):
data1 = [x, 1, 2]
data2 = [x, 1, 2, 3, 4, 5]
s1 = sum(data1)
s2 = sum(data2)
return s1 + s2 + x
@testbench
def test():
assert 18 == list11(0)
assert 21 == list11(1)
assert 24 == list11(2)
test()
모두 싣고 싶지만, 911행의 사랑을 베고 있기 때문이다.
polyphony_out.v
module sum_sub_sum_sub_sub_sum
(
input wire signed [31:0] l21_q,
input wire signed [12:0] l21_len,
input wire CLK,
input wire RST,
input wire sub_sub_sum_READY,
input wire sub_sub_sum_ACCEPT,
output reg signed [31:0] sub_sub_sum_OUT0,
output reg l21_req,
output reg signed [31:0] l21_d,
output reg signed [12:0] l21_addr,
output reg l21_we,
output reg sub_sub_sum_VALID );
ザックっと中略
begin
if (in_addr[ADDR_WIDTH-1] == 1'b1) begin
address = RAM_LENGTH + in_addr;
end else begin
address = in_addr;
end
end
endfunction // address
wire [ADDR_WIDTH-1:0] a;
assign a = address(ADDR);
assign Q = mem[read_addr];
assign LEN = RAM_LENGTH;
always @ (posedge CLK) begin
if (WE)
mem[ADDR] <= D;
read_addr <= a;
end
endmodule
그 다음엔 어떻게 하지?
아마 iverilog를 설치하면 시뮬레이션을 할 수 있을 거예요.삼바도 있으니까 잘하면 비바도와 협업해서 합성할 수 있을 것 같아요.그 정도는 아니야.
절반을 쓴 것처럼 보이지만 그게 끝이야.
Reference
이 문제에 관하여(PYNQ로 Jupyter를 하고 Polyphony로 고위 합성을 합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ryos36/items/56ff8270674b0d0c72b8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(PYNQ로 Jupyter를 하고 Polyphony로 고위 합성을 합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ryos36/items/56ff8270674b0d0c72b8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)