Làm thế nào để chuyển đổi 'thực tế' giá trị để std_logic_vector?

G

GeekWizard

Guest
Có cách nào để chuyển đổi các giá trị thực tế để định dạng std_logic_vector?

Các conv_std_logic_vector () dường như chỉ có các giá trị số nguyên và cung cấp cho một lỗi cho người khác!

Cảm ơn nhiều.

 
Trước hết, loại điều trị nào bạn muốn cho-số nguyên số không?

Các số thực 5,25 nên trở thành những gì bit mẫu?
00000101 cho 5?
00010101 cho 21 / 4 (thể hiện với LSB đang được một phần tư đơn vị)?

Trong mọi trường hợp, bạn nên sử dụng ieee.numeric_std.all, và sử dụng to_unsigned.Bạn có thể bỏ các thực sự cho số nguyên nếu bạn chỉ muốn lấy một phần số nguyên

my_sig <= to_unsigned (số nguyên (5,25), my_sig'length);

 
1.Bất số học và chuyển đổi loại thực ngụ ý không được xử lý bởi IEEE.NUMERIC_STD gói hơn là IEEE.MATH_REAL.

2.Chuyển đổi thực sự cho số nguyên đòi hỏi IEEE.MATH_REAL tròn () chức năng.E. g.:
Mã số:

CONSTANT UREF: INTEGER: = ROUND (1,23 * 2,0 ** 15);
 
Heres vấn đề của tôi:

1.'Nguyên' chỉ 32 bit.Tôi đang làm việc với số lượng nhiều hơn mà uptil 48 bit.(Ví dụ 4.456E13)

2.Ý tưởng của tôi là sử dụng 'thực tế' số điện thoại cho tất cả các tính toán và sau đó chuyển đổi chúng sang một std_logic_vector của 48 bits đến các cảng đầu ra.

Vì vậy, nó không phải là các số dấu chấm động mà tôi đang lo lắng về.Bất cứ ý tưởng làm thế nào để có được xung quanh vấn đề này?

Cảm ơn!Thêm vào sau khi 2 phút:Trên một mặt lưu ý, là có một đơn vị ALU trong qu (at) rtus trình biên dịch?Tôi đã nhìn qua có sẵn 'biểu tượng' trong thư viện và có thể không phải bất cứ thành phần đó.

 
be used for synthesis, isn't limited to 32 bit (although some IP, eg Xilinxs divider core has an arbitrary 32 bit limitation).

Ký kết hoặc số học chưa ký, có thể
được dùng để tổng hợp, là không giới hạn 32 bit (mặc dù một số IP, ví dụ như chia Xilinxs lõi có giới hạn 32 bit tùy ý).Tôi đã đề cập loại số nguyên chỉ để chứng minh việc sử dụng của IEEE.MATH_REAL trong tổng hợp.

be used - with special IP.

Ngoài ra điểm nổi có thể
được sử dụng - với đặc biệt IP.opencores.org có một số nội dung nổi.

Altera nói riêng đã FP_ADD_SUB, FP_MULT, FP_DIV, FP_SQRT và FP_COMPARE Megafunctions vận chuyển với qu (at) rtus.

 
Tôi chọn tham gia để làm việc với tất cả các 'kiểu số "unsigned và tôi nhận được một lỗi trong cách sử dụng" / "(bộ phận) điều hành!

Trích:

Lỗi (10.327): VHDL lỗi tại computation2.vhd (90): không thể xác định định nghĩa của ""/"" điều hành - định nghĩa có thể tìm thấy 0
 
Ngăn không infered từ "/" nhà điều hành trong các công cụ tổng hợp nhất.

 
Vậy làm thế nào ngăn nên được thực hiện trong VHDL cho qu (at) rtus?

Có điều là qu (at) rtus inferring các trình biên dịch được "/" nhà điều hành như là một chia khi số lượng tham gia được các kiểu nguyên, nhưng không cho unsigned!

 
Tôi không nghĩ rằng Quartus infers ngăn với kiểu số nguyên (hoặc tôi đã không nhận thức được tính năng này chưa).Nó có thể đánh giá "/" nhà điều hành trong các biểu thức không đổi hoặc cho các tính toán thời gian biên dịch.Nhưng cho mục đích tổng hợp, bạn phải sử dụng Megafunction alt_divide hoặc các lõi chia bất kỳ, bạn cung cấp.

PS: Tôi tìm thấy, đó thực sự infers Quartus ngăn từ divisison số nguyên.Tuy nhiên, tính năng sẽ là cách hiệu quả không có giấy tờ trong Quartus Cẩm nang.Tôi phải học, nếu các thông số có thể được chia conrolled một cách hữu ích.Cám ơn bạn này cái nhìn sâu sắc thú vị.

PPS: Chúng tôi có thể xác định kích thước toán hạng bằng cách cài đặt INTEGER RANGE, cũng> = 0 subrange được xử lý là toán hạng unsigned.Nhưng dường như làm việc với các loại chỉ INTEGER.

 

Welcome to EDABoard.com

Sponsor

Back
Top